当我尝试计算密码字段时,下面的代码有什么问题?

时间:2016-02-25 08:13:09

标签: javascript html getelementsbytagname getattribute

以下代码有什么问题?根据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);
}

2 个答案:

答案 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函数。