2013-01-24 147 views
1

我有一個包含記錄列表的表格。每一行有類「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> 

我想構造,檢查是否「record_approval」具有的值的javascript函數(其值不重要),如果是,請更改該行的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{ 

    } 
} 

這是本質上是錯誤的做法?

+0

沒有,它報告定義。 – kjarsenal

+0

那裏有一些錯誤。我會添加一個答案。 – bfavaretto

回答

1

誤區,我發現:

  • 未閉合for環路(缺少一個右}
  • 您正在尋找request_list類,但在你的HTML這是list_request
  • 您應該使用checkcell[i]而不是checkcell在你的循環中
  • 你的顏色十六進制值sh應該從#開始。
  • 沒有必要從事件偵聽器獲取所有行和單元格
  • 目前尚不清楚何時需要該功能運行。它是否應對一個事件?

此外,我會在行上設置一個新的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

+0

這個工作,有點...它將表標題行標識爲父級,並將所有第#個單元格變成#ff9900。所以我想這只是正確定位包含tr的問題。 – kjarsenal

+0

我的錯誤,我無意中將tr css設置爲#ff9900。這段代碼不適合我。 – kjarsenal

+0

你想改變整行的顏色,還是隻改變批准的單元格?什麼是着色的條件,目前還不清楚。整個行都是 – bfavaretto

0
  1. checkcell是一組元素。你會想循環訪問'checkcell [i]'而不是checkcell.value。
  2. 十六進制的顏色應該以一個「#」前FF9900
  3. 來定義您的迴路未關閉正確

基本更新S.T.

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

} 
相關問題