2011-06-24 65 views
0

我想通過<tr>id值而不是this.id,如何獲取tr id值。請幫我謝謝pass <tr> id值javascript函數

<tr id="1"> 
    <td> 
     <input type="checkbox" onclick="toggle(this.id)" value="private" name="private" id="private_1"> 
    </td> 
    <td> 
     <input type="checkbox" onclick="toggle(this.id)" checked="" value="public" name="public" id="public_1"> 
    </td> 
</tr> 
<br> 
<tr id="2"> 
    <td> 
     <input type="checkbox" onclick="toggle(this.id)" checked="" value="private" name="private" id="private_2"> 
    </td> 
    <td> 
     <input type="checkbox" onclick="toggle(this.id)" value="public" name="public" id="public_2"> 
    </td> 
</tr> 

Demo

+0

您的「演示」沒有做任何事情。你至少已經實現了一些虛擬的'toggle'功能。 –

回答

4

如果結構是完全一樣,你能儘快使用

this.parentNode.parentNode.id 

當然會制動器結構的變化。

而是結合了click事件,你應該綁定到change事件。然後您還介紹了鍵盤所做的更改。


由於每個處理器在做同樣的,你應該考慮利用event bubbling。相反,在你的HTML事件處理程序連接到每一個input元素,僅附加一個事件處理程序表:

var table = document.getElementById('tableId'); 

table.onchange = function(event) { 
    event = event || window.srcElement; // IE specials 
    var target = event.target || event.srcElement; // IE specials 

    // was the element a checkbox? 
    if(target.nodeName === "INPUT" && target.type === "checkbox") { 
     // find parent row 
     var parent = target.parentNode; 
     while(parent.nodeName !== "TR" && parent !== null) { 
      parent = parent.parentNode; 
     } 

     if(parent) { // we found the row 
      toggle(parent.id); 
     } 
    } 
}; 

這看起來比較複雜,但有你沒有寫onclick="toggle(this.id)"上的優勢每input元素。

DEMO

+0

感謝,你ARA偉大! –