HTML:
def addToTail(myList, value):
ptr = myList
prev = ptr
while ptr != None:
prev = ptr
ptr = ptr['next']
node = {}
node['data'] = value
node['next'] = None
prev['next'] = node
return myList
JAVASCRIPT:
<button id="s01" onclick="getMusic(this.id)"></button>
<button id="s02" onclick="getMusic(this.id)"></button>
好吧所以我上面有这个代码(这是一个简化版本)。此功能会将var s01 = ["file", "song"];
var s02 = ["file", "song"];
function getMusic(e){
alert()
}
中的e
设置为getMusic(e)
或s01
。我需要能够调用与该名称相对应的变量(在s02
内),但我甚至不确定从哪里开始。任何帮助表示赞赏,谢谢!
alert()
并将其替换为js文件中的onclick=""
并仍然达到相同的效果吗?我不喜欢像这样混合我的脚本。
答案 0 :(得分:3)
如果你使用一个对象来保存你的数据,那就容易多了
var data = {
s01 : ["file", "song"],
s02 : ["file", "song"]
};
function getMusic(e){
console.log( data[e] );
}
如果你使用addEventListener
,你也可以删除内联的javascript
var data = {
s01 : ["file1", "song"],
s02 :["file2", "song"]
}
document.querySelectorAll('.btn').forEach(function(el) {
el.addEventListener('click', function() {
console.log( data[this.id] );
});
});
<button id="s01" class="btn">Test 1</button>
<button id="s02" class="btn">Test 1</button>
答案 1 :(得分:1)
首先,回答你的第二个问题,是的,你可以在JS中注册事件监听器:
document.querySelectorAll("input[type=button]").forEach(function(el){
el.addEventListener("click", getMusic)
})
一旦您以这种方式注册了事件处理程序,您就可以通过访问id
获取该按钮的e.target.id
。
function getMusic(e){
alert(e.target.id) // will alert with button id
}
此时,您有一个包含id
的字符串;现在您需要能够提取与id
对应的值。定义一个带有与id
对应的哈希的JSON包是最有意义的。
var data = {
s01: ["your", "data"],
s02: ["your", "other", "data"]
}
function getMusic(e){
myData = data[e.target.id]
alert(myData)
}
答案 2 :(得分:-2)
在JavaScript中,window
对象存在,其中包含所有全局变量。
只需使用window[e]
即可获得数组的值:
var s01 = ["file", "song"];
var s02 = ["file", "song"];
function getMusic(e){
alert(window[e])
}
&#13;
<button id="s01" onclick="getMusic(this.id)"></button>
<button id="s02" onclick="getMusic(this.id)"></button>
&#13;