Получение ближайшего элемента по идентификатору

StackOverflow https://stackoverflow.com/questions/53256

  •  09-06-2019
  •  | 
  •  

Вопрос

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

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

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

Это было полезно?

Решение

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

Другие советы

  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. Затем вы можете использовать nextSibling и prevSibling Функции обхода DOM. Еще немного информации здесь.И еще раз ссылка на w3schools для Узлы XML DOM.

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

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

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

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

http://docs.jquery.com/Selectors

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top