【发布时间】:2014-04-12 00:03:07
【问题描述】:
这是 javascript 的正确代码吗?
var inputsClass = document.getElementsByClassName("inputClass");
var errorSpan = document.getElementsByClassName("errorSpan");
for(var index=0; index < inputsClass.length;index++ ){
inputsClass[index].onclick=function(){
inputsClass[index].errorSpan.style.color="black";
}
}
因为在我的 JavaScript 控制台中它显示 Uncaught TypeError: Cannot read property 'style' of undefined 但我有相同数量的标签具有 inputsClass 和 errorSpan 类。然而inputsClass[index] 似乎未定义。
HTML 部分
<h1> SIGN UP </h1>
<br />
<input type="text" name="firstName" placeholder="First Name"
class="inputClass" autofocus/>
<span class="errorSpan"> Testing... </span>
<br />
<input type="text" name="lastName" placeholder="Last Name" class="inputClass"/>
<span class="errorSpan"> Testing... </span>
<br />
<input type="text" name="userName" placeholder="Username" class="inputClass"/>
<span class="errorSpan"> Testing... </span>
<br />
<input type="password" name="password" placeholder="Password" class="inputClass"/>
<span class="errorSpan"> Testing... </span>
<br />
<input type="password" name="retypePassword" placeholder="Retype Password"
class="inputClass"/>
<span class="errorSpan"> Testing... </span>
<br />
<input type="email" name="email" placeholder="Email" class="inputClass"/>
<span class="errorSpan"> Testing... </span>
<br />
所以当点击输入标签时测试文本节点应该变黑。 顺便说一句,我真的很感谢你帮助我 jfriend00
【问题讨论】:
-
您的
var没有声明任何内容。您获得的元素没有附加任何变量。 -
你不能使用
var作为变量名,它是JavaScript中的保留字。 -
即使您的代码不完整,我认为这是循环问题中的典型闭包。至少错误消息表明是这样。
-
不仅如此,输入也没有
.errorSpan属性。 -
伙计们,这个问题在循环中有一个闭包问题,但它还有另一个问题是
errorSpan不是inputsClass的属性所以这不是什么的纯粹副本它已被标记为重复并阅读其他问题,它的答案不会解决 OP 的问题(这应该是重复的实际定义)。我投票决定重新开放,因为这个问题的问题不仅仅是缺少关闭。
标签: javascript dom