我正在注册一个用户点击输入标签的注册页面 一个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
时定义了它答案 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
)的空或不完整结果。