通过事件委托
<div id="control">
<ul>
<li value="edu"><span>abc</span></li>
<li value="edu"><a href="#edu" >edu</a></li>
<li value="experience"><a href="#experience">ex</a></li>
</ul>
<script>
let control=document.getElementById("control");
control.addEventListener("click",function find(eve) {
if(eve.target.nodeName==='A') {
let href=eve.target;
alert(href);
</script>
如果点击第一个 li 标签 alert 的是 span 标签
但是点击 a 标签的 alert 的是一个 URL,不是 a 标签,这是为什么啊?
1
iNaru 2018-05-02 14:14:30 +08:00
href.toString()
|
2
rabbbit 2018-05-02 14:36:52 +08:00
alert 方法接收字符串,如果传入其他值,则自动调用 toString 方法转为字符串.
而 a 节点的 toString 方法继承自 HTMLAnchorElement,该方法返回 URL(相当于调用 a.href) |