2

我有一张包含记录列表的表格。每行都有“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函数来检查“record_approval”是否有一个值(哪个值不重要),如果是,则更改该行的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{

    }
}

这本质上是错误的方法吗?

4

2 回答 2

2

我发现的错误:

  • for闭环(缺少闭环}
  • 您正在寻找 class 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

于 2013-01-24T17:51:04.303 回答
0
  1. checkcell 是一个元素数组。你会想要遍历它们,访问'checkcell [i]'而不是checkcell.value。
  2. 您的十六进制颜色应在 ff9900 之前使用“#”定义
  3. 你的 for 循环没有正确关闭

基本上更新它

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

}
于 2013-01-24T17:50:02.397 回答