Получить значение выбранного элемента литий
Прежде всего я добавляю EventListener к ul следующим образом:
action_list_ul.addEventListener("click", set_ua_value, false);
Задание set_ua_value состоит в следующем:
• слушайте каждый щелчок, сделанный на ul childs (li elements) * получить значение (innerHTML?) тега a внутри щелкнутого li
<ul id="action-list">
<li><a href="#">foo</a></li>
<li><a href="#">bar</a></li>
</ul>
В случае, если foo был нажат, мне нужно получить строку" foo".
Поскольку я довольно новичок в javascript, я не уверен, как получить фактическое " это" нажатого ли.
Я не хочу использовать jQuery. Спасибо :)
3 ответа:
Быстрый и грязный способ-привязать событие к списку и отфильтровать по якорным тегам:
JS
var action_list_ul = document.getElementById('action-list'); action_list_ul.addEventListener("click", set_ua_value, false); function set_ua_value (e) { if(e.target.nodeName == "A") { console.log(e.target.innerHTML); } }
Альтернативно, вы можете фильтровать по
LI
, и получить доступ к якорю черезfirstChild
илиchildNodes[0]
.
Используйте что-то вроде:
var win = window, doc = document, bod = doc.getElementsByTagName('body')[0]; function E(e){ return doc.getElementById(e); } function actionListValue(element, func){ var cn = element.childNodes; for(var i=0,l=cn.length; i<l; i++){ if(cn[i].nodeType === 1){ var nc = cn[i].childNodes; for(var n=0,c=nc.length; n<c; n++){ if(nc[n].nodeType === 1){ nc[n].onclick = function(){ func(this.innerHTML); } } } } } } actionListValue(E('action-list'), set_ua_value);
Вот альтернатива:
var foo = document.getElementById("foo"); foo.addEventListener("click", modifyText); function modifyText(e) { console.log(e.target.innerHTML); }
В этом случае привязка должна быть с элементами
a
.<ul id="action-list"> <li><a href="#" id="foo">foo</a></li> <li><a href="#" id="bar">bar</a></li> </ul>