使用hasAttribute()获取TypeError:hasAttribute不是函数

时间:2016-04-01 04:56:18

标签: javascript html

我试图找出没有&#34;样式&#34;的<img>元素的数量。使用 JavaScript

HTML 文件中进行归因

我的解决方案:找出<img>代码的数量为&#34; imgCount &#34;,然后获得<img>代码的数量为&#34;样式& #34;属性为&#34; imgStyCount &#34;。之后,使用&#34; imgCount &#34;减去&#34; imgStyCount &#34;得到我想知道的最终结果。

然而,出了点问题。我的浏览器告诉我

  

TypeError:document.getElementsByTagName(...)[K] .hasAttribute不是函数

在if语句中。 奇怪的是, 警报(document.getElementsByTagName(&#34; img&#34;)[k] .hasAttribute(&#34; style&#34;) 显示if语句结果为TRUE。 如何不是一个功能,并给出真正的价值?

&#13;
&#13;
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;
&#13;
<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" />
&#13;
&#13;
&#13;

3 个答案:

答案 0 :(得分:2)

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

您可以将querySelectorAllattribute selector

一起使用

document.querySelectorAll('img[style]')将选择包含<img>属性的所有style元素。

&#13;
&#13;
var result = document.querySelectorAll('img').length - document.querySelectorAll('img[style]').length;

alert(result);
&#13;
<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" />
&#13;
&#13;
&#13;

答案 1 :(得分:1)

  

使用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

答案 2 :(得分:0)

SET NOCOUNT ON;

SET CONCAT_NULL_YIELDS_NULL OFF;  
CREATE TABLE ##QueryResults (foo int);

SELECT OBJECT_ID ('tempdb..##QueryResults');
IF OBJECT_ID ('tempdb..##QueryResults') IS NOT NULL
    DROP TABLE ##QueryResults;
SELECT OBJECT_ID ('tempdb..##QueryResults');
GO

SET CONCAT_NULL_YIELDS_NULL ON;  
CREATE TABLE ##QueryResults (foo int);

SELECT OBJECT_ID ('tempdb..##QueryResults');
IF OBJECT_ID ('tempdb..##QueryResults') IS NOT NULL
    DROP TABLE ##QueryResults;
SELECT OBJECT_ID ('tempdb..##QueryResults');