Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/477.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 更改php生成的动态表中td的颜色_Javascript_Php_Jquery_Html_Css - Fatal编程技术网

Javascript 更改php生成的动态表中td的颜色

Javascript 更改php生成的动态表中td的颜色,javascript,php,jquery,html,css,Javascript,Php,Jquery,Html,Css,我正在创建一个PHP脚本,它将为一个表动态生成tr和td元素。当用户单击第一列中的特定单元格时,将执行一个AJAX函数来显示其他内容。这是工作,因为它应该,然而,我有什么应该是简单的造型问题。当用户单击一个给定的单元格时,我希望该行改变颜色(工作),直到他们单击另一个单元格(不工作) 因为我的PHP文件相当大,所以我只发布相关部分 <?php $myFiles = showMyAttrs(); foreach($myFiles as $myFile) { echo("<tr cl

我正在创建一个PHP脚本,它将为一个表动态生成tr和td元素。当用户单击第一列中的特定单元格时,将执行一个AJAX函数来显示其他内容。这是工作,因为它应该,然而,我有什么应该是简单的造型问题。当用户单击一个给定的单元格时,我希望该行改变颜色(工作),直到他们单击另一个单元格(不工作)

因为我的PHP文件相当大,所以我只发布相关部分

<?php
 $myFiles = showMyAttrs();
 foreach($myFiles as $myFile) {
echo("<tr class = 'gradeC' onClick = 'changeColour(this)' onchange = 'restoreColour(this)' >");
echo("<td onClick = 'sendCell(this)' ><img src = $msEx /></td>");
echo("<td>$myFile</td>");
echo("</tr>");
}
在我尝试之前:

function changeColour(z) {
  document.getElementsByTagName("tr").style.backgroundColor = "#00FF00";
  z.style.backgroundColor = "#FFFFFF";
  <!-- document.getElementsByTagName("td").style.backgroundColor = "#00FF00"; -->
}

function changeColour(z) {
  z.style.backgroundColor = "#FFFFFF";
  document.getElementsByTagName("tr").style.backgroundColor = "#00FF00";
}

$('tr').click(function() {
  $('tr').css('backgroundColor', '#0F0');
  $(this).css('backgroundColor', '#FFF');
});
功能更改颜色(z){
document.getElementsByTagName(“tr”).style.backgroundColor=“#00FF00”;
z、 style.backgroundColor=“#FFFFFF”;
}
功能更改颜色(z){
z、 style.backgroundColor=“#FFFFFF”;
document.getElementsByTagName(“tr”).style.backgroundColor=“#00FF00”;
}
$('tr')。单击(函数(){
$('tr').css('backgroundColor','#0F0');
$(this.css('backgroundColor','#FFF');
});

对于每一行(最后一行除外),颜色都会变为白色,但是,当用户单击任何其他行时,前一行不会返回绿色。我不介意这是否适用于Javascript或JQuery,只要它能够跨浏览器兼容。即使是一个花哨的CSS技巧,我也可以使用

尝试使用css类指定背景颜色:

$('.gradeC td').on('click',function(e){
   if(!$(this).closest('tr').hasClass('green')){ 
      $(this).closest('tr').addClass('green');
    }else{
     $(this).closest('tr').removeClass('green');   
    }
});

请参见演示

您走上了正确的轨道。我认为添加/删除类将是一个很好的方法。你可以试试这个:

jQuery

$('tr').on('click', function() {
  $('tr').children('td').removeClass('active');
  $(this).children('td').addClass('active');
});
CSS

.active { background-color: yellow; }

+1因为这是一个问得很好的问题。
.active { background-color: yellow; }