如何使用for循环为音频文件创建动态URL?Java脚本

无限零

我最近开始学习编码,而自我挑战也遇到了问题。我的意图是使用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);
    });
}
艾米尔(Emiel Zuurbier)

除了Sachin Nayak的正确答案之外,解决此问题的另一种方法是使用let代替varlet在循环范围内创建一个变量,该变量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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章