我尝试通过使用JavaScript找出HTML文件中没有“样式”属性的<img>
元素的数量。
我的解决方案:找出<img>
标签的数量为“ imgCount”,然后获取具有“ style”属性的<img>
标签的数量为“ imgStyCount”。之后,使用“ imgCount”减去“ imgStyCount”获得我想知道的最终结果。
但是,出了点问题。我的浏览器不断告诉我
TypeError:document.getElementsByTagName(...)[K] .hasAttribute不是函数
在if语句中。
奇怪的是,alert(document.getElementsByTagName(“ img”)[k] .hasAttribute(“ style”)显示if语句结果为TRUE。
怎么会像没有一个函数并给出真实的值呢?
var imgCount = 0;
var imgStyCount = 0;
var result;
for (k in document.getElementsByTagName("img")) {
if (document.getElementsByTagName("img")[k].hasAttribute("style") == true) {
alert(document.getElementsByTagName("img")[k].hasAttribute("style"));
console.log(" <img> =: ", document.getElementsByTagName("img")[k].style);
imgStyCount++;
}
imgCount++;
}
result = imgCount - imgStyCount;
<img height="150px" src="Http://flax.nzdl.org/images/ngf.jpeg" style="vertical-align:middle;margin-right:20px;" />
<img src="Http://flax.nzdl.org/images/abc.jpg" />
<img src="Http://flax.nzdl.org/images/fbc.jpg" />
<img src="Http://flax.nzdl.org/images/agc.jpg" />
<img src="Http://flax.nzdl.org/images/abt.jpg" />
最佳答案
使用for-loop
迭代image
元素而不是for-in
var imgStyCount = 0;
var elems = document.getElementsByTagName("img");
for (var k = 0; k < elems.length; k++) {
if (elems[k].hasAttribute("style")) {
imgStyCount++;
}
}
var result = elems.length - imgStyCount;
alert(result);
<img height="150px" src="Http://flax.nzdl.org/images/ngf.jpeg" style="vertical-align:middle;margin-right:20px;" />
<img src="Http://flax.nzdl.org/images/abc.jpg" />
<img src="Http://flax.nzdl.org/images/fbc.jpg" />
<img src="Http://flax.nzdl.org/images/agc.jpg" />
<img src="Http://flax.nzdl.org/images/abt.jpg" />
Fiddle demo
关于javascript - 使用hasAttribute()获取TypeError:hasAttribute不是函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36348342/