JavaScript数组不起作用,直接输入可以使用。
JavaScript数组不起作用,直接输入可以使用。
我有一个包含复选框的数组,这些值代表了我的网站上的复选框。
如果单击复选框,我希望对应的复选框标签变为蓝色。
我有一个可工作的点击函数,它工作得很完美,但只有在直接使用复选框名称时才有效(这是复选框名称 haustiere_erlaubt
):
$('#haustiere_erlaubt').click(function(){ if(document.getElementById("haustiere_erlaubt").checked) { $("label[for=haustiere_erlaubt]").css("color", "#0d9eff"); } else { $("label[for=haustiere_erlaubt]").css("color", "#b4b4b4"); } });
我网站上有多个复选框,使用数组更高效,因为我不想多次编写相同的代码。但是不知何故,它不起作用,尽管控制台显示正确的复选框名称:
var bool_checkboxes = ["haustiere_erlaubt", "bettwaesche_wird_gestellt", "grill_vorhanden", "safe_vorhanden", "kuehlschrank_vorhanden", "rauchen_erlaubt", "parkplatz_vorhanden", "kochmoeglichkeit_vorhanden", "restaurant_im_haus_vorhanden", "handtuecher_werden_gestellt", "tv_vorhanden", "waschmoeglichkeit_vorhanden", "wlan_vorhanden"]; for (var bool_field = 0; bool_field < bool_checkboxes.length; bool_field++) { console.log(bool_checkboxes[bool_field]); $('#' + bool_checkboxes[bool_field]).click(function(){ if(document.getElementById(bool_checkboxes[bool_field]).checked) { $("label[for=" + bool_checkboxes[bool_field] + "]").css("color", "#0d9eff"); } else { $("label[for=" + bool_checkboxes[bool_field] + "]").css("color", "#b4b4b4"); } }); }
当单击复选框时,我在控制台日志中收到以下错误消息:
Uncaught TypeError: Cannot read property 'checked' of null at HTMLInputElement.(main.js:292) at HTMLInputElement.dispatch (jquery.min.js:3) at HTMLInputElement.r.handle (jquery.min.js:3)
JavaScript数组不起作用,直接输入有效的问题可能是由于以下原因引起的:
1. 循环索引在闭包内部无法保持一致,导致无法正常使用。解决方法是使用this
关键字,如上述示例代码所示。
2. 可能存在其他代码问题或语法错误导致数组无法正常工作。解决方法是检查代码中是否存在其他错误,并确保语法正确。
3. 可能存在未正确引入或初始化数组的问题。解决方法是确保数组已经正确引入并且已经初始化。
为了解决JavaScript数组不起作用的问题,可以尝试以下解决方法:
1. 使用this
关键字来代替循环索引,以确保闭包内部的变量保持一致。
2. 检查代码中是否存在其他错误或语法问题,并进行修复。
3. 确保数组已经正确引入并且已经正确初始化。
通过以上解决方法,应该能够解决JavaScript数组不起作用的问题。如果问题仍然存在,可能需要进一步检查代码逻辑或寻求其他解决方案。