我最近开始学习编码,而自我挑战也遇到了问题。我的意图是使用for循环在包含颜色名称(代表按钮)的数组中循环,以创建指向音频文件的动态URL,而不是将音频文件的URL单独添加到每个按钮。作为一个新手,此代码对我来说很有意义,但它不起作用。使用浏览器的“考察”的工具,我注意到输出buttonColours[i]
是走出来的不确定。请帮助我理解原因!!!
var buttonColours = ["red","blue","green","yellow"];
var sounds = [];
for (var i = 0; i < buttonColours.length; i++){
$("."+buttonColours[i]+"").click(function(event){
// Add sound when button is clicked
sounds[i]= new Audio("sounds/"+buttonColours[i]+".mp3");
sounds[i].play();
// Add CSS class when button is clicked
$(".red").addClass("pressed");
setTimeout(function(){
$(".red").removeClass("pressed");
}, 200);
});
}
除了Sachin Nayak的正确答案之外,解决此问题的另一种方法是使用let
代替var
。let
在循环范围内创建一个变量,该变量var
将是一个全局变量,每次迭代都会被覆盖。这意味着let
您不会覆盖值,而是在每次迭代时创建一个新值,从而使引用保持不变。
var buttonColours = ["red","blue","green","yellow"];
var sounds = [];
// Notice let i instead of var i.
for (let i = 0; i < buttonColours.length; i++) {
$("." + buttonColours[i]).click(function(event) {
// Add sound when button is clicked
sounds[i] = new Audio("sounds/" + buttonColours[i] + ".mp3");
sounds[i].play();
// Add CSS class when button is clicked
$(".red").addClass("pressed");
setTimeout(function() {
$(".red").removeClass("pressed");
}, 200);
});
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句