从使用getElementsByClassName()创建的数组中获取值

时间:2012-02-14 04:30:37

标签: javascript html user-input validation

我正在尝试创建一个函数来检查以确保用户提供的所有输入都是数字。

function wholeFormValid() {
var inp = document.getElementsByClassName('userInput'); 
    //userInput is a class name i provide to all my non-hidden input fields.
    //I have over 20 hidden values (I need to use hidden values to store state in a session).

    //Wanted to print out what my function is getting. I keep seeing undefined values.
var string= "justToInitializeThis";
for(var m in inp) {
    string = string + " " + inp.value;
}
alert(string);

    //Actual function that will be used once I track down the bug.
for(var i in inp) {

    if(inp.value != "") {
        if(!(/^[0-9]+$/.test(inp.value))) {
            return false;
        }
    }
}
return true;

}

该函数确实返回了正确的输入字段,我可以从不同的页面中看出它们在用户可以提供的输入量方面有所不同。但我无法理解的是为什么我的所有值都返回为null而不是用户输入的值。我对HTML& Javascript,只需要第二双眼睛:)感谢提前。

2 个答案:

答案 0 :(得分:2)

使用此

var inp = document.getElementsByClassName('userInput'); 

var string= "justToInitializeThis";
for(var i=0; i < inp.length; i++) {
    string = string + " " + inp[i].value;
}
alert(string);

同样适用于另一个循环

答案 1 :(得分:1)

更改:

for(var m in inp) {
    string = string + " " + inp.value;
}

for(var m in inp) {
    string = string + " " + inp[m].value;
}
  

for ... in循环迭代对象的属性

https://developer.mozilla.org/en/JavaScript/Reference/Statements/for...in