将字符串转换为JS对象

时间:2016-05-12 16:50:03

标签: javascript audio buzz.js

我知道这是一个重复的问题,但我无法弄清楚如何处理我的情况。 我想用JS Buzz库播放音频。请检查以下

var pg1 = new buzz.sound("oimages/music/as.mp3");
var pg2 = new buzz.sound("oimages/music/zx.mp3");
var pg3 = new buzz.sound("oimages/music/as.mp3");

在特定事件中,我想播放此音频。这里1,2和3是页码。请检查以下

$("#flipbook").bind("turned", function (event, page, view) {;
    bog ='pg'+page; // page is the number of page here
    window.bog.play(); //error
});

它给了我以下错误

  

未捕获的TypeError:window.bog.play不是函数

请指导。

3 个答案:

答案 0 :(得分:1)

简单的错误。您试图错误地引用变量。 bog不是名称,但它包含名称......

$("#flipbook").bind("turned", function (event, page, view) {;
    bog ='pg'+page; // page is the number of page here
    window[bog]play(); //error
});

这假定pg1..3变量具有全局范围。如果他们没有将声明更改为......

window.pg1 = new buzz.sound("oimages/music/as.mp3");

等。

答案 1 :(得分:1)

因为bog ='pg'+page;是一个字符串,而不是对声音文件的引用。

您需要引用声音,假设它们在全局范围内,您可以使用括号表示法

var bog = window['pg'+page];

答案 2 :(得分:-1)

评估可以解决问题:

$("#flipbook").bind("turned", function (event, page, view) {;
    bog ='pg'+page;
    eval('window.' + bog + '.play()');
});