function   change(tr){  
      var   table=document.getElementById("mytable");  
      for   (i=0;i<table.rows.length   ;i++   )  
      {  
          table.rows[i].style.background="white";//底色  
          if( table.rows[i].cells[0].innerHTML!="")
          {          
              tr.style.background="lightblue";//点击后的颜色  
          }
       }
  } 
我想要实现的功能是,我所选中的行的第一个单元格不为空时,变为lightblue。但是似乎不行,我选中为空的一行,它还是会变色,不知道是什么原因?

解决方案 »

  1.   

    JS程序能运行,说明程序没有问题,但是空行还是变色,那说明那个单元格内容不为空,注意当看到为空格时其HTML内容是&nbsp;而不是真正的空内容, innerHTML得到的 估计是看不见的 &nbsp; 而不是空的内容,
      

  2.   

    table.rows[i].cells[0].innerHTML lz应该先确定一下这个值是什么,可能不是控字符串呢
      

  3.   

     function  change(tr){  
          var  table=document.getElementById("mytable");  
          for  (i=0;i <table.rows.length  ;i++  )  
          {  
              table.rows[i].style.background="white";//底色  
              if( table.rows[i].cells[0].innerHTML!="") 
              {          
                  table.rows[i].style.background="lightblue";//点击后的颜色  
              } 
          } 
      } 或者
     function  change(tr)
    {  
          if( tr.cells[0].innerHTML!="") 
              tr.style.background="lightblue";//点击后的颜色   
         else
             tr.style.background="white";//底色  
      

  4.   

    为了固定表格的大小,我最开始是向表格里全部填充了&nbsp。
    那要怎么判断是不是为空呢?
      

  5.   

    将空字符和 &nbsp; 替换为空字符串,然后判断是否为空...
    var reg = /(\s)|(&nbsp;)/gi;// 匹配空字符和 &nbsp;
    if(table.rows[i].cells[0].innerHTML.replace(reg, "") != ""){          
    ...

    ...
      

  6.   

    搞定了!
    我把table.rows[i].cells[0].innerHTML的内容打印出来,发现竟然是 “&nbsp;”,然后我直接判断不等于它就可以了。谢谢大家~
      

  7.   

    逻辑有问题
    function  change(tr){  
          var  table=document.getElementById("mytable");  
          for  (i=0;i <table.rows.length  ;i++  )  
          {  
              table.rows[i].style.background="white";//底色  
           } 
          if( tr.cells[0].innerHTML!="") 
          {          
               tr.style.background="lightblue";//点击后的颜色  
           }