2008-09-10 6 views
1

У меня есть два элемента:Получение ближайшего элемента по идентификатору

<input a> 
<input b onclick="..."> 

Когда б нажат, я хочу, чтобы получить доступ к и управлять некоторыми из своих данных. A не имеет глобально уникального имени, поэтому document.getElementsByName отсутствует. Заглядывая в объект события, я думал, что event.target.parentNode будет иметь некоторую функцию, например getElementsByName, но это не похоже на <td> s. Есть ли простой способ сделать это?

ответ

5

Если a и b находятся рядом друг с другом и имеют тот же родитель, вы можете использовать prevSibling свойство b найти a.

2
  1. Вы должны быть в состоянии найти элемент, который был нажат на event object. В зависимости от вашего браузера вам может понадобиться e.target или e.srcElement. Приведенный ниже код от этого w3schools example:

    function whichElement(e) { 
        var targ; 
        if (!e) var e = window.event; 
        if (e.target) { 
        targ=e.target; 
        } else if (e.srcElement) { 
        targ = e.srcElement; 
        } 
    
        if (targ.nodeType==3) { // defeat Safari bug 
        targ = targ.parentNode; 
        } 
    
        var tname; 
        tname = targ.tagName; 
        alert("You clicked on a " + tname + " element."); 
    } 
    
  2. Вы можете затем использовать DOM обхода функции nextSibling и prevSibling. Some more information here. И еще раз справочник w3schools для XML DOM Nodes.

0

Оставьте свой обычный ванильный JavaScript позади. Получите JQuery - это сэкономит вам массу времени.

http://docs.jquery.com/Selectors

1

Prototype также имеет хорошие функции для перемещения по DOM. В вашем примере что-то вроде следующего будет делать трюк:

b.up().down('a') 

И если есть более чем один элемент на этом уровне у вас есть сила CSS селекторы в руке, чтобы точно определить, какой элемент вы хотите

Смежные вопросы