передать <tr>значение идентификатора функции JavaScript - PullRequest
0 голосов
/ 24 июня 2011

Я хочу передать <tr> значение id вместо this.id, Как получить значение tr id. пожалуйста, помогите мне спасибо

<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>

Демо

1 Ответ

5 голосов
/ 24 июня 2011

Если структура в точности такая, вы можете использовать

this.parentNode.parentNode.id

Конечно, это будет тормозить, как только структура изменится.

Вместо привязки к событию click, вы должны привязаться к событию change.Затем вы также учитываете изменения, сделанные с помощью клавиатуры.


Поскольку каждый обработчик делает то же самое, вы должны использовать всплывающее событие .Вместо того, чтобы прикреплять обработчик событий к каждому элементу input в вашем HTML, присоедините к таблице только один обработчик :

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...