.getAttribute is not a function报错 对于getAttribute的一点小想法
我最近在学习SVG编程,对于SVGDOM对象内部的属性进行操作,时常需要取属性,来利用getAttribute()实现。
我在利用getAttribute()成功将数据取了出来,但是在网页的console台却报错了。
js代码如下所示:
//获取要取到的XML文件中的所有数据
var SVGElement = document.getElementById('geo_svg');
//从SVG的XML中,把所有的polygon多边形取出来
var polygonElements = SVGElement.getElementsByTagName('polygon');
//取出每个ploygen数组中的数据
for(var x in polygonElements){
//打印每个polygon的points属性
console.log(polygonElements[x].getAttribute("points"));
运行后,在console台的打印信息如下所示:
可以看到上面成功取出点集坐标来了,在下面,却报错
Uncaught TypeError: polygonElements[x].getAttribute is not a function
at findCoordinate (init?projTbmId=1&tabPageId=jerichotabiframe_1:1596)
at Object.success (init?projTbmId=1&tabPageId=jerichotabiframe_1:1573)
at l (jquery-1.8.3.min.js:2)
at Object.fireWith [as resolveWith] (jquery-1.8.3.min.js:2)
at T (jquery-1.8.3.min.js:2)
at XMLHttpRequest.r (jquery-1.8.3.min.js:2)
我想了很久也没想明白,为什么取出数据来,还报错。看了网上的debug也没有帮助。
后来我打印了一下所查数据的类型:
console.log(typeof(polygonElements[x]));
最后发现这个查询对象,有三种数据类型,一个是number,一个是Object,一个是function。
然后我就加了一个判断是否为对象,若是对象,则getAttribute()可用,否则不可用。
if(typeof(polygonElements[x])=="object")
加入这条语句后,自动过滤非对象数据类型。完美解决bug
对于这种取属性的函数,需要经常进行判断是否是对象。增强代码的鲁棒性,这一点很重要。
打完收工!
还没有评论,来说两句吧...