定位特定单元格的父行

时间:2013-01-24 17:38:51

标签: javascript

我有一张包含记录列表的表格。每一行都有类" list_request"并且有一个类" record_approval"的单元格:

<table>
<tr>
    <th>name</th><th>date</th><th>id</th><th>group</th><th>approval</th>
<tr class="list_request">
<td>Frank</td><td>2012-2-15</td><td>01</td><td>Account</td><td class="record_approval">Dave Ellis</td>
</tr>
<tr class="list_request">
<td>Ellen</td><td>2012-2-19</td><td>04</td><td>Admin</td><td class="record_approval">Susan Peters</td>
</tr>
<tr class="list_request">
<td>Michael</td><td>2012-2-26</td><td>06</td><td>Admin</td><td class="record_approval"></td>
</tr>

我想构建一个javascript函数来检查&#34; record_approval&#34;有一个值(该值不重要),如果是,则更改该行的css颜色值。基本上,批准的记录应该具有与未批准的记录不同的颜色。 类似......

function check_approval(){
    var checkrow = document.querySelectorAll( "tr.request_list" )
    var checkcell =  document.querySelectorAll( "td.record_approval" )

    for (i=0;i<checkcell.length;i++){  
    if (!checkcell.value){
        this.parentNode.style.color = "ff9900";
    }  
    else{

    }
}

这实际上是错误的方法吗?

2 个答案:

答案 0 :(得分:1)

我发现错误:

  • 未结合的for循环(缺少结束}
  • 您正在寻找课程request_list,但在您的HTML上list_request
  • 您应该在循环中使用checkcell[i]而不是checkcell
  • 您的颜色十六进制值应以#开头。
  • 无需从事件侦听器获取所有行和单元格
  • 目前还不清楚您希望该功能何时运行。它应该回应一个事件吗?

另外,我在行上设置了一个新的css类,而不是直接设置颜色。


显然,你正在寻找这个:

var checkcell =  document.querySelectorAll( "td.record_approval" );
for (i=0;i<checkcell.length;i++){  
    if (checkcell[i].innerHTML){
        checkcell[i].parentNode.style.color = "#ff9900";
    }
}

http://jsbin.com/anadij/1/edit

答案 1 :(得分:0)

  1. checkcell是一个元素数组。你需要循环访问它们,访问'checkcell [i]'而不是checkcell.value。
  2. 您的十六进制颜色应使用ff9900前面的“#”
  3. 定义
  4. 您的for循环未正确关闭
  5. 基本上更新它s.t.

    if (!checkcell[i].value){
        checkcell[i].parentNode.style.color = "#ff9900";
    } else{
    
    }