以下代码有什么问题?根据linda的说法,getElementsByTagName
应该返回array
,所以基本上应该可以正常工作。请帮我解释一下出了什么问题?
var outputs= 0;
function countPasswds(){
var v= document;
d=v.getElementsByTagName("input");
x= d.getAttribute("type");
for (var i=0; i< d.length; i++){
if (x[i] == "password")
outputs++;
}
console.log("Number of Password Fields is: ", outputs);
}
答案 0 :(得分:1)
x= d.getAttribute("type");
您正尝试从文档中获取type属性。
您必须检查每个输入的类型属性,您不能只获取一次并在任何地方重复使用。
在for循环中移动get属性调用并将其应用于元素对象。
答案 1 :(得分:1)
我已经为你修好了,请试试这个:
function countPasswds() {
var inputType;
var outputs = 0;
var inputs = document.getElementsByTagName("input");
for (var i = 0; i < inputs.length; i++) {
inputType = inputs[i].getAttribute("type");
if (inputType == "password")
outputs++;
}
console.log("Number of Password Fields is: ", outputs);
}
您的功能存在许多问题。 首先,不要使用一个字符变量名,这会使您的代码极难阅读或理解。
您已为for
元素的数量设置input
循环,但在循环内部,尝试获取'i'-th
x
的值。
修复的主要部分是在循环中移动getAttribute
函数。