使用jQuery每个循环选择对象

时间:2017-06-19 21:30:21

标签: javascript jquery html5 html5-audio

我正在尝试设置一个变量来表示每个类的唯一音频对象,如下所示:

var x0 = new Audio('1.wav');
var x1 = new Audio('2.wav');

$('.class').each(function(i) {
    var x = "x" + i; 
    alert(x); 

    //...code that is identically executed for each class using different audio clips...
});

上面的代码会生成一个警告,显示字符串" x1"而不是对象x1。

是否可以使用上述方法(或类似方法)将变量设置为等于对象?我知道var x = x1正确地将变量x设置为对象x1。现在,我正在寻找一种以更动态/自动的方式实现这一目标的方法。

3 个答案:

答案 0 :(得分:0)

不是为每个设置不同的变量,而是将它们放在一个数组中。

var audioFiles = [
  new Audio('1.wav'),
  new Audio('2.wav')
];

然后,你可以这样访问它们:

audioFiles[0]

或,

audioFiles[i]

答案 1 :(得分:0)

var x = {
  0: new Audio('1.wav'),
  1: new Audio('2.wav')
}

$('.class').each(function(i) {
  var a = x[i];
  alert(a);
})

如果您确定要将后续数字用作键,并且由于某种原因不会跳过任何数字,您也可以使用数组而不是对象。

答案 2 :(得分:-1)

您应该在添加它们时将它们推入数组中 - 然后您可以通过数组位置来定位对象 - 并且.each将按预期工作。每个都将引用数组中的对象 - 而不是单个字符串值。

var audiofiles = [];
var x0 = new Audio('1.wav');
var x1 = new Audio('2.wav');
audiofiles.push(x0);
audiofiles.push(x1);

audiofiles.each(function(i) {
    alert(i); 
});