gpt4 book ai didi

javascript - 通过包含字符串的变量设置对象不起作用

转载 作者:太空宇宙 更新时间:2023-11-04 16:20:46 25 4
gpt4 key购买 nike

我在我的网站上开发了一个非常基本的音频播放器,类似于 SoundClouds。

我已成功完成它,并且我开始清理所有标记,包括(尝试)删除所有内联事件处理程序(即: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>

现在是:

<div class="track-w__trigger" aria-trackid="3" id="w3w-trigger"></div>

正如您在第二个代码块中看到的那样。 w3w 是一个对象。但是,因为我已使用字符串引号在单独的 script 中使用我的 click 函数设置了它。 JavaScript 已经将其变成了字符串

所以现在当我使用 wave.isPlaying() 时;它什么也不做。

我不知道如何解决这个问题,Google 上也没有任何结果可以帮助我。任何解决此问题的帮助将不胜感激,

谢谢!

编辑:

这是设置 w3w 的位置和方式:

var w3w = Uki.start({
// e.t.c
});

最佳答案

使用评估wave = eval(wave); 将字符串作为函数进行计算

或者使用更安全的方式

wave = window[wave];

https://jsfiddle.net/zmr412q7/

关于javascript - 通过包含字符串的变量设置对象不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40669811/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com