关于getAttribute setAttribute属性的记录
今天学习打码过程中发现getAttribute 和setAttribute属性值得注意的一个问题,代码如下:
<body>
<h2 title="清单" id="one">购物清单</h2>
<ul>
<li>欧星</li>
<li>苹果</li>
<li>香蕉</li>
<li>荔枝</li>
</ul>
<script type="text/javascript">
var shopping=document.getElementsByTagName("h2");
var attr=shopping.getAttribute("title");
alert(attr);
</script>
</body>
在运行时发现报错如下:
Uncaught TypeError: shopping.getAttribute is not a function
在更改方法为:
var shopping=document.getElementsById("one");
后方法正常运行。
查阅《JavaScript DOM 编程艺术》发现getElementById返回的是一个object,而getElementByTagName和getElementByClassName的返回值是一个对象数组。
查阅MDN
element.setAttribute(name, value);
element.getAttribute(attributeName);
element属于object,故出现以上现象。由此延伸:
<body>
<!--<button id="btn" onclick="btnClick()">点我</button>-->
<h2 title="清单" id="one">购物清单</h2>
<ul>
<li>欧星</li>
<li>苹果</li>
<li>香蕉</li>
<li>荔枝</li>
</ul>
<script type="text/javascript">
var shopping=document.getElementsByTagName("h2");
var attr=shopping[0].getAttribute("title");
alert(attr);
</script>
</body>
运行正常,也证明了上诉观点。