Получение ближайшего элемента по идентификатору - PullRequest
1 голос
/ 10 сентября 2008

У меня есть два элемента:

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

Когда нажимается b, я хочу получить доступ к a и манипулировать некоторыми из его данных. A не имеет глобально уникального имени, поэтому document.getElementsByName отсутствует. Изучая объект события, я подумал, что в event.target.parentNode есть какая-то функция, например getElementsByName, но, похоже, это не так для

s. Есть ли простой способ сделать это?

Ответы [ 4 ]

5 голосов
/ 10 сентября 2008

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

2 голосов
/ 10 сентября 2008
  1. Вы сможете найти элемент, по которому щелкнули объекты события . В зависимости от вашего браузера вы можете захотеть e.target или e.srcElement. Код ниже взят из этого примера w3schools :

    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. Дополнительная информация здесь . И снова справочник w3schools для XML DOM Nodes .

1 голос
/ 10 сентября 2008

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

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

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

0 голосов
/ 10 сентября 2008

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

http://docs.jquery.com/Selectors

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