javascript - ie6下某些元素不能获取到nodeName,什么原因?
伊谢尔伦
伊谢尔伦 2017-04-10 12:45:35
0
2
608
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>无标题页</title>
    <style type="text/css">
    .item{float:left;width:100px;height:100px;margin-left:50px;margin-top:50px;background:#ccc;}
    #container{overflow:hidden;width:500px;padding-right:50px;border:1px solid #000;}
    </style>
</head>
<script  type ="text/javascript">
window.onload = function (){
elems = document.body.childNodes;
for (var i = 0; i < elems.length; i++){
    elems[i].onclick = function (e) {
        //triggerElement = e ? e.target :event.srcElement;
        //alert(triggerElement.nodeName);
        alert(this.nodeName);
    }
}


}


</script>

<body>
 <p id="container">
 <p class="item">浮动测试</p>
 <p class="item">浮动测试</p>
 <p class="item">浮动测试</p>
 <p class="item">浮动测试</p>
 <p class="item">浮动测试</p>
 <p class="item">浮动测试</p>
 <p class="item">浮动测试</p>
 </p>
 <a href="#">呵呵 这是一个链接</a>
 <ul>
    <li>列表一</li>
    <li>列表二</li>
    <li>列表三</li>
</ul>
<span>这是一个span</span>
<p>这是一个p</p>

 </body>


</html>

以上是测试代码,在firefox/ie7+/chorme下代码都正常运行,但是在ie6下面 li span p 这几个标签的nodeName却没有弹出来(this和event情况相同),这个兼容性问题怎么修复? (确认jq已经修正了该问题,没读过jq源码的孩纸请教了)

伊谢尔伦
伊谢尔伦

小伙看你根骨奇佳,潜力无限,来学PHP伐。

全部回覆(2)
左手右手慢动作
for (var i = 0; i < elems.length; i++){
    if (elems[i].nodeType == 1) {
        elems[i].onclick = function (e) {
            //triggerElement = e ? e.target :event.srcElement;
            //alert(triggerElement.nodeName);
            alert(this.nodeName);
        }
    }
}

要加上判断nodeType,因为document.body.childNodes中不仅包括了标签,还有文字。关于node有很多种类型,对应类型码如下。而ElEMENT_NODE才有onclick这个属性,所以TEXT_NODE的节点在onclick时会出错,程序中断了,后面的节点自然无法触发点击事件,所以你会发现LI SPAN P这几个标签没反应,不信你可以先不修改代码,只把html中这几个标签提前到最前面,看是不是可以触发了。


ELEMENTNODE 1
ATTRIBUTE
NODEDeprecated 2
TEXTNODE 3
CDATA
SECTIONNODEDeprecated 4
ENTITY
REFERENCENODEDeprecated 5
ENTITY
NODEDeprecated 6
PROCESSINGINSTRUCTIONNODE 7
COMMENTNODE 8
DOCUMENT
NODE 9
DOCUMENTTYPENODE 10
DOCUMENTFRAGMENTNODE 11
NOTATION_NODEDeprecated 12

小葫芦

//在这里加一个判断 if(elems[i].nodeType === 1) { elems[i].onclick = function (e) { //triggerElement = e ? e.target :event.srcElement; //alert(triggerElement.nodeName); alert(this.nodeName); } }

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!