首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用hasAttribute() get TypeError: hasAttribute不是一个函数

使用hasAttribute() get TypeError: hasAttribute不是一个函数
EN

Stack Overflow用户
提问于 2016-04-01 04:56:17
回答 4查看 22.3K关注 0票数 2

我试图通过使用<img> JavaScript来找出在HTML文件中没有“样式”属性的元素的数量。

我的解决方案:找出<img>标记的编号为"imgCount",然后以“imgCount”属性获取<img>标记的数量。在此之后,使用"imgCount“减imgCount来获得我想知道的最终结果。

但是,有些地方出了问题。我的浏览器一直告诉我

document.getElementsByTagName(...)K.hasAttribute不是一个函数

在if声明中。奇怪的是,alert(document.getElementsByTagName("img")k.hasAttribute("style")显示if语句的结果是真的。它怎么可能不像一个函数而给出真正的价值呢?

代码语言:javascript
复制
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;
代码语言:javascript
复制
<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" />

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2016-04-01 05:00:31

使用for-loop来迭代image元素而不是for-in

代码语言:javascript
复制
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);
代码语言:javascript
复制
<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" />

小提琴演示

票数 3
EN

Stack Overflow用户

发布于 2016-04-01 05:04:28

这里有一种不使用循环的简单方法。

您可以将querySelectorAll属性选择器结合使用

document.querySelectorAll('img[style]')将选择页面上具有style属性的所有<img>元素。

代码语言:javascript
复制
var result = document.querySelectorAll('img').length - document.querySelectorAll('img[style]').length;

alert(result);
代码语言:javascript
复制
<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" />

票数 6
EN

Stack Overflow用户

发布于 2022-09-07 14:16:49

不用谢。

代码语言:javascript
复制
function hasAttr(el, attr) {
      if(typeof el === 'object' && el !== null && 'getAttribute' in el  && el.hasAttribute(attr)) return true
      else return false
    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36348342

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档