我希望做一个相当简单的操作:你点击一个li
,你就可以使用JavaScript(而不是JQuery)获取文本。我能弄清楚(或找出)的是如何获得innerHTML
。
function enable() {
document.addEventListener('click', e => {
if (e.target.classList.contains('refine-menu-li')) {
var selected = this.innerHTML;
console.log('stuff'); // Working
console.log(selected); // Not working
}
});
}
我使用的问题class
是否需要for
- 循环?或this
尝试使用是愚蠢的事情吗?
谢谢!
答案 0 :(得分:1)
箭头函数从声明它们的上下文中捕获this
。
this.innerHTML
不是您要找的innerHTML
。
您可能想要e.target.innerHTML
。
如果您没有使用箭头功能,那么this
将不是您想要的值。事件处理程序在它们绑定的元素的上下文中调用(在本例中为document
),而不是触发事件的元素。
答案 1 :(得分:1)
试试这个
function enable() {
document.addEventListener('click', e => {
var current = e.target;
if (e.target.classList.contains('refine-menu-li')) {
var selected = current.innerHTML;
console.log('stuff'); // Working
console.log(selected); // Not working
}
});
}
enable();
<ul>
<li class='refine-menu-li a'>1 </li>
<li class='refine-menu-li b '>2</li>
<li class='refine-menu-li c '>3</li>
<li class='refine-menu-li d'>4</li>
</ul>
答案 2 :(得分:1)
你可以尝试这样的东西,而不使用箭头功能:
document.getElementById("js-list")
.addEventListener("click",function(e) {
if(e.target && e.target.nodeName == "LI") {
console.log(e.target.innerHTML);
}
});
<ul id="js-list">
<li>value1</li>
<li>value2</li>
<li>value3</li>
</ul>