Javascript onchange事件中的索引变量不正确
我正在尝试附加onchange事件以选择标记。 一个div中有多个标记。 因此,我使用for循环将事件附加到每个事件。 我想做的是更新另一个容器中的select标记。 基本上,如果用户选择的选项不是默认选项,它会从另一个select中删除“disabled”属性 我的问题是for循环中使用的索引变量“i”在onchange触发时出现错误。 “i”是最后一个递增的值。 好像它就像一个全局静态变量 我不知道如何搜索这个问题,所以我正在创建一个新的问题。我希望有人能帮忙 这是小提琴: 这是代码:Javascript onchange事件中的索引变量不正确,javascript,html,Javascript,Html,我正在尝试附加onchange事件以选择标记。 一个div中有多个标记。 因此,我使用for循环将事件附加到每个事件。 我想做的是更新另一个容器中的select标记。 基本上,如果用户选择的选项不是默认选项,它会从另一个select中删除“disabled”属性 我的问题是for循环中使用的索引变量“i”在onchange触发时出现错误。 “i”是最后一个递增的值。 好像它就像一个全局静态变量 我不知道如何搜索这个问题,所以我正在创建一个新的问题。我希望有人能帮忙 这是小提琴: 这是代码: va
var screenprint = document.getElementsByClassName('screenprint')[0];
var sp = screenprint.getElementsByClassName('placements')[0].getElementsByTagName('select');
for (var i = 0; i < sp.length; i++) {
sp[i].onchange = function(t){
if(this.value!==0){
screenprint.getElementsByClassName('color')[0].getElementsByTagName('select')[i].disabled= false;
}
else{
screenprint.getElementsByClassName('color')[0].getElementsByTagName('select')[i].disabled= true;
}
var screenprint=document.getElementsByClassName('screenprint')[0];
var sp=screenprint.getElementsByClassName('placements')[0].getElementsByTagName('select');
对于(变量i=0;i
如果(this.value!==0){
语法不正确。如果(this.value!=0){,则应为
此外,当您打开Javascript控制台时,它会显示:uncaughttypeerror:无法设置未定义的属性“disabled”
因此,屏幕打印出现错误。getElementsByClassName('color')[0]。getElementsByTagName('select')[i]
,我认为您没有正确引用
标记
<div class="color">
<h3>No. of colors</h3>
<label >For 1st placement</label>
<select disabled name="color">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
</select>
</div>
颜色数目
第一名
1.
2.
3.
4.
5.
6.
我建议您在元素导航的每个步骤中发出警报
以查看它在哪里变为null并从那里修复它。您能解释一下为什么它的语法不正确吗!==运算符执行严格的不等式比较。在检查相等之前,它不会尝试将操作数转换为兼容类型。是的,这是不正确的。Tha谢谢你指出这一点。我现在习惯了严格的测试,所以我使用了它。最终它会在测试时出现。@karan我编辑了我的答案检查SP[1]的值可能为空。我仍然无法在我的案例中找到如何实现它的方法。但感谢链接。