Передача нескольких внутренних дочерних узлов в функцию - PullRequest
1 голос
/ 07 марта 2012

Мне нужно передать содержимое внутреннего div в функцию, например, myfun (string) .Я пытался использовать

myfun((this).children[0].innerHTML)

myfun((this).children[1].innerHTML)

myfun((this).children[0].children[0].innerHTML)

, но ни один из них, похоже, не работает.Я не могу просто передать значение getElementById, потому что функция должна быть универсальной, поскольку она будет вызываться php для различных <a> элементов (в идеале я думаю, что она должна включать ключевое слово this. ).

enter image description here

Спасибо за любую помощь.

Ответы [ 4 ]

2 голосов
/ 07 марта 2012

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

this.getElementsByClassName('label')[0]

Это не будет работать в IE 8 и ниже .

Если выВы абсолютно уверены, что структура HTML / DOM не изменится, возможно, вы могли бы использовать:

this.nextSibling.children[0];

Но это может иметь проблемы в браузерах, которые рассматривают textNode s как childNode s

1 голос
/ 07 марта 2012

в вашей функции «this» относится к ссылке и не может быть использовано.

гораздо более чистым решением было бы знать, что myfunc получит объект, содержащий текст

JavaScript:

myfunc(obj){
   alert(obj.childNodes[0].nodeValue);
}

HTML

   <a href="#" onclick="myfunc(document.getElementByID('target'));return false;">click</a>
   <div id="target">target contents</div>
1 голос
/ 07 марта 2012

Объект this будет применяться к тегу <a>, который он вызывает. Сначала вам нужно вызвать родительский div, а затем выбрать детей соответственно.

Попробуйте использовать this.parent.children[1].children[0].innerHTML

0 голосов
/ 07 марта 2012

Попробуйте this.parent.children[1].children[0].innerHTML

Но вы должны использовать динамические идентификаторы вместо этого беспорядка.

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