Javascript 通过包含无效字符串的变量设置对象
我在我的网站上开发了一个非常基本的音频播放器,类似于SoundClouds 我成功地完成了它,并开始清理所有标记,包括(尝试)删除所有内联事件处理程序(即:Javascript 通过包含无效字符串的变量设置对象,javascript,jquery,html,Javascript,Jquery,Html,我在我的网站上开发了一个非常基本的音频播放器,类似于SoundClouds 我成功地完成了它,并开始清理所有标记,包括(尝试)删除所有内联事件处理程序(即:onclick=“”或onkeyup=“”)) 然而,在执行此操作时,我在JavaScript中遇到了一些问题 这有点难以解释,因此我将发布我的JavaScript,然后让您了解问题所在: $(".track-w__trigger").click(function(){ var tid = $(this).attr('aria-tra
onclick=“”
或onkeyup=“”
))
然而,在执行此操作时,我在JavaScript中遇到了一些问题
这有点难以解释,因此我将发布我的JavaScript,然后让您了解问题所在:
$(".track-w__trigger").click(function(){
var tid = $(this).attr('aria-trackid'); // aria-trackid is equal to a random integer created by PHP
var tiW = 'w' + tid + 'w'; // this is an object (i.e: w3w)
playPauseButton(this, tiW, ti);
});
function playPauseButton(button, wave, trackID){
var button = $(button);
if(wave.isPlaying()){ // the object (w3w.isPlaying())
button.removeClass("playing");
wave.pause();
} else {
button.addClass("playing");
wave.play();
}
}
我曾经拥有的是
<div class="track-w__trigger" onclick="playPauseButton(this, w3w, 3)" id="w3w-trigger"></div>
不要将每个对象作为一个单独的变量,而是创建一个对象,该对象在表示wNw中N的id处包含每个对象。例:
var wNw = {};
// represents w1w
wNw[1] = (Uki.start({
// e.t.c
}));
// represents w17w
wNw[17] = (Uki.start({
// e.t.c
}));
// represents w3w
wNw[3] = (Uki.start({
// e.t.c
}));
这将为您提供一个如下所示的对象:
{
1: object_that_was_w1w
17: object_that_was_w17w
3: object_that_was_w13w
}
然后单击处理程序如下所示:
$(".track-w__trigger").click(function(){
var tid = $(this).attr('aria-trackid'); // aria-trackid is equal to an integer of 1 to 5
var tidNum = parseInt(tid);
playPauseButton(this, wNw[tidNum], ti);
});
你可以试试这样的
var tid='w'+5+'w';
var tryout=tid.valueOf();
log(“获取对象”+试用)
使用eval
wave=eval(wave)代码>
将字符串作为函数计算
或者用更安全的方法
wave = window[wave];
什么是w3w
?“设定在哪里?”ParthTrivedi等一下,编辑我的code@ParthTrivedi编辑!你把它放在这里当作一根绳子,是吗?变量tiW='w'+ti+'w';ti变量是什么?它会改变吗dynamically@GraveyardQueen是的,但因为它有引号,它不再是一个对象。如果我执行var tiW=w+ti+w
,它会给我一个错误。不幸的是,这不起作用:/PHP会在页面向下滚动时生成这些数字(使整数5增加)。我已经对我帖子中的评论进行了编辑。Sorryeval非常气馁。@Joe为什么?
$(".track-w__trigger").click(function(){
var tid = $(this).attr('aria-trackid'); // aria-trackid is equal to an integer of 1 to 5
var tidNum = parseInt(tid);
playPauseButton(this, wNw[tidNum], ti);
});
wave = window[wave];