用于li标记子节点onclick的Javascript代码

Javascript code for li tag child node onclick

本文关键字:Javascript 代码 onclick 子节点 li 用于      更新时间:2023-09-26

Part of Javascript for li tag onclick location

li标签onclick:

关于span标签的问题。

下面的JS工作很好,如果我在span标签中使用单个类名,但如果在span标签(<span class="info navclass">Test</span>)中使用多个类名,则onclick不起作用,因为"e.target"。className"指向所有类名。

我有什么办法可以做到吗?

JS代码:
var changeLocation = function(id) {
  var _url = document.getElementsByClassName(id)[1].getAttribute('href');
  location.href = _url;   
}
document.getElementById("hd_vertical").addEventListener("click",function(e) {
        if(e.target.nodeName == "LI") { 
            var _anchor = e.target.id;
            changeLocation(_anchor);
        } else if(e.target.nodeName == "SPAN") {
            var _anchor = e.target.className;   
            changeLocation(_anchor);
        }
});
HTML代码:
<div class="primaryNav fl">
 <ul id="hd_vertical" class="productNav">
    <li id="info" class="validation">
    <span class="info navclass">Test</span>
    <a class="info" href="http://validator.w3.org/">Test1</a>
    </li>
    <li id="learn" class="site">
    <span class="learn hdclass">fi</span>
    <a class="learn" href="http://www.w3schools.com/">Buses</a>
    </li>
  </ul>
</div>

Jsfiddle链接:

http://jsfiddle.net/sudheera/NgwS5/14/

与其使用class,不如找到parentNode并获得所需的功能

演示小提琴

Javascript

document.getElementById("hd_vertical").addEventListener("click",function(e) {
        if(e.target.nodeName == "LI") { 
            var _anchor = e.target.id;
            changeLocation(_anchor);
        } else if(e.target.nodeName == "SPAN") {
            var span = e.target;
            var li = span.parentNode;
            var _anchor = li.id;   
            changeLocation(_anchor);
    }
});  

希望能有所帮助....