注册表单onclick / for循环

时间:2014-03-08 16:48:56

标签: javascript

我正在注册一个用户点击输入标签的注册页面 一个span标签出现在右侧,指定了要求

实施例。用户点击输入和范围说“用户名必须至少__个字符长”

我将css文件中的span设置为display:none

然后在我的javascript文件中包含以下代码:

//lists all the input tags in an array
var signUpInputs = document.getElementsByClassName("signUpInputs");

for(var index=0; index < signUpInputs.length;index++ ){
    alert("hi"); **//Just to check if function works and it does**
**//The following code below doesn't though. In the console it says "Uncaught    
    TypeError: Cannot read property 'style' of undefined "**

    signUpInputs[index].onclick=function(){
 document.getElementsByClassName("errorFormMessage")[index].style.display="inline-   
    block";
}
}//end of for loop

我不确定为什么它说它无法读取未定义的属性样式,因为我相信我在使用document.getElementsByClassName

时定义了它

1 个答案:

答案 0 :(得分:0)

document.getElementsByClassName("errorFormMessage")[index].style.display = ...

这是现在产生错误Cannot read property 'style' of undefined的代码行,错误意味着对于一个/一些相应的{{1},缺少类errorFormMessage的元素} elements。

通过迭代signUpInputs的结果来索引循环,但它正在尝试访问不存在的document.getElementsByClassName("signUpInputs")元素。这意味着现在必须至少有一个errorFormMessage元素没有相应的signUpInputs元素。

确保您的HTML代码与errorFormMessage个元素的元素完全一一对应,即对于您的每个元素errorFormMessage元素signUpInputs 1}},你需要一个类signUpInputs的元素,在HTML页面的其他地方不存在任何类型的额外元素,除非它们也有一对匹配的两个元素。

您还应该确保在将相关的HTML元素添加到DOM之后运行您的脚本,但我认为这不是问题,因为在您开始循环之前该问题会显现出来(您会得到来自errorFormMessage)的空或不完整结果。