【发布时间】:2018-05-27 00:35:52
【问题描述】:
我正在使用数据库来根据变量用特定颜色绘制表格单元格。如果是 1 是灰色,如果是 0 是绿色。但是,我想让灰色的不能通过点击改变颜色,同时让绿色的在点击时改变颜色。如果值改变,数据库中的 1 和 0 可以随时改变。我做不到,所以您可以通过单击更改绿色单元格,同时防止更改灰色单元格。
我使用这部分按预期检查数据库和颜色:
$(document).ready(function(){
$("#pedido").click(function(){
var tipo = "TraD";
$.post("Controlador.php",{Tip:tipo}, function(datos){
json = JSON.parse(datos);
var Hor = json.Horario;
var tick = [], tock;
var hashes = Hor.split(',');
for(var i = 0; i < hashes.length; i++){
tock = hashes[i].split('=');
tick.push(tock[0]);
tick[tock[0]] = tock[1];
}
var Secuencia= "";
for(var i=2; i <= 55 ; i++){
if(tick[i]==1){
document.getElementById("d"+(i-1)).style.backgroundColor ="rgb(119, 136, 155)";
document.getElementById("d"+(i-1)).unbind('click');
}
}
如您所见,我试图禁用灰色选项中的点击选项,但它根本不起作用。表格单元格以及它们如何改变颜色如下所示:
<td style = "background-color: rgb(0, 250, 154); " onclick = "cambiar(this);" id = "d1"></td>
<td style = "background-color: rgb(0, 250, 154); " onclick = "cambiar(this);" id = "d2"></td>
<td style = "background-color: rgb(0, 250, 154); " onclick = "cambiar(this);" id = "d3"></td>
<td style = "background-color: rgb(0, 250, 154); " onclick = "cambiar(this);" id = "d4"></td>
<td style = "background-color: rgb(0, 250, 154); " onclick = "cambiar(this);" id = "d5"></td>
<td style = "background-color: rgb(0, 250, 154); " onclick = "cambiar(this);" id = "d6"></td>
如果有其他方法可以解决这个问题,我会全力以赴。非常感谢。
编辑:好的,这里是函数 cambiar:
function cambiar(celda){
if( celda.style.backgroundColor == "rgb(0, 250, 154)"){
celda.style.backgroundColor="rgb(119, 136, 155)";
}else{
celda.style.backgroundColor="rgb(0, 250, 154)"; //778899
}
}
【问题讨论】:
-
你能不能只将一个类附加到可点击的那些上,然后将一个事件附加到那些而不是附加一个事件到所有行。
-
可点击的内容会根据从数据库中获取的数据而改变(这取决于外部输入,因此会不断变化),因此我无法从一开始就指定可点击的内容跨度>
-
不,我从来没有打算从一开始就将它们设置为可点击,我的意思是让事件侦听器寻找类
.clickable,然后当你获得数据时,附加@ 987654325@类根据数据可点击。 -
你能告诉我们运行 onclick = "cambiar(this);" 的函数吗
-
只是一个想法 - 我不愿建议它,因为它是一种解决方法 - 但是所有单元格都可以在点击时更改颜色,而灰色的单元格会变为灰色?
标签: javascript php html sql database