【发布时间】:2017-10-24 14:51:44
【问题描述】:
我想加载不同的音频文件,点击网页中的不同文本。我使用以下 jQuery 函数:
var audio = document.createElement('audio');
$(".text_sample").on("click", function() {
audio.src = eval(this.id);
audio.play();
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<a class="text_sample" id="a_music">music</a><br />
<a class="text_sample" id="a_weather">weather</a>
您认为在这种情况下使用eval 是否正确?有更好的方法吗?
【问题讨论】:
-
嗯?但是
a_music的评估结果是什么?这段代码应该只是抛出一个“未捕获的 ReferenceError” -
@JosephMarikle 实际上,如果页面上有一个带有 id 的元素,浏览器(可能不是全部?)将向窗口对象添加一个变量。所以 window.a_music 将被定义。仍然不是正确的方法,但除非您处于严格模式,否则它不会引发错误
-
@NicholasTower 啊!是的你是对的。我完全忘记了这是一件事。
-
抱歉,我以 dup 的身份关闭,但意识到您要求获取变量,而另一个问题是设置变量。无论如何,您可能会从这个问题中找到有趣的信息:stackoverflow.com/questions/26019658/…
标签: javascript jquery audio eval