JS 中getAttribute()获取不到属性,getAttributeNode却可以?
<divid="box">你好</div><script>varele=document.getElementById("box");varatt=ele.getAttr...
<div id="box">
你好
</div>
<script>
var ele=document.getElementById("box");
var att=ele.getAttributeNode("id");
//nodeType
console.log(ele.nodeType);/*打印1*/
console.log(att.nodeType);/*打印undifined*/
// nameType
console.log(ele.nodeName );/*打印div*/
console.log(att.nodeName);/*打印undifined*/
</script>
不应该是getAttributeNode的效率比getAttribute要低一些吗? 展开
你好
</div>
<script>
var ele=document.getElementById("box");
var att=ele.getAttributeNode("id");
//nodeType
console.log(ele.nodeType);/*打印1*/
console.log(att.nodeType);/*打印undifined*/
// nameType
console.log(ele.nodeName );/*打印div*/
console.log(att.nodeName);/*打印undifined*/
</script>
不应该是getAttributeNode的效率比getAttribute要低一些吗? 展开
1个回答
展开全部
这是因为getAttribute的返回值是个字符串(String),也就是要获取的那个属性的值,它并没有nodeType和nodeName这样的属性,所以显示结果为undifined。你直接用
console.log(att);
就能看到实际结果了(即"box")
而getAttributeNode返回的则是一个Node对象,包括了属性的名称(nodeName)、属性的类型(nodeType)和属性的值(nodeValue),所以两者是不同的,如果你只需要获取属性的值,建议使用getAttribute。
另外,由于id是DIV标签的内置属性,所以可以直接这样来使用:
var att=ele.id;
console.log(att);
就能看到实际结果了(即"box")
而getAttributeNode返回的则是一个Node对象,包括了属性的名称(nodeName)、属性的类型(nodeType)和属性的值(nodeValue),所以两者是不同的,如果你只需要获取属性的值,建议使用getAttribute。
另外,由于id是DIV标签的内置属性,所以可以直接这样来使用:
var att=ele.id;
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询