我已经在函数外部定义了变量,并且我需要能够根据函数调用的参数来调用变量。
HTML
<button id="Area300" style="left:755px;" onclick="a('normal', 'Area300')"></button>
JAVASCRIPT
var Area300_Data = "somedata"
function a(data, data1) {
if (data=='extra') {
//do something
} else if (data=='normal') {
console.log(data1+_Data)
//Should display "somedata"
}
}
如何将data1
的参数与_Data
结合使用(在这种情况下)获得Area300_Data
?
答案 0 :(得分:3)
除非您使用Lazy Loading
,否则可能不起作用。
其次,eval
将充当变量,除非您将其添加为字符串。因此,要么将其放在引号中,要么使用模板文字
_Data
var Area300_Data = "somedata"
function a(data, data1) {
if (data == 'extra') {
//do something
} else if (data == 'normal') {
console.log(eval(`${data1}_Data`))
//Should display "somedata"
}
}
答案 1 :(得分:2)
如果您位于全局范围内,则每个var
都存储到window
所以您可以
window[`${data1}_Data`]
答案 2 :(得分:0)
您可以将数据保留在Object中,并像属性一样访问该数据
例如
var data = {
Area300_Data : "somedata"
}
现在您可以像这样动态地访问该数据
function a(data, data1) {
if (data=='extra') {
//do something
} else if (data=='normal') {
console.log(data[data1+'_Data'])
//Should display "somedata"
}
}
比访问窗口对象更具可读性
答案 3 :(得分:0)
data1+_Data
在名为+
和data1
的两个变量之间应用_Data
运算符。您不能像这样访问变量。
在这种情况下,Area300_Data
在全局范围内,并使用var
进行声明,因此它存在于window
中。您可以使用括号符号window
从[]
访问它
var Area300_Data = "somedata"
function a(data, data1) {
if (data=='extra') {
//do something
} else if (data=='normal') {
console.log(window[`${data1}_Data`])
//Should display "somedata"
}
}
<button id="Area300" style="left:755px;" onclick="a('normal', 'Area300')">button</button>
Data
的对象中并从那里访问它
let Data = {
Area300:"somedata"
}
var Area300_Data = "somedata"
function a(data, data1) {
if (data=='extra') {
//do something
} else if (data=='normal') {
console.log(Data[data1])
//Should display "somedata"
}
}
<button id="Area300" style="left:755px;" onclick="a('normal', 'Area300')">button</button>
答案 4 :(得分:0)
为什么不尝试创建一个使用data1作为键的对象呢?
var gobalInfo = {
Area300: "somedata"
}
function a(data, data1) {
if (data=='extra') {
//do something
} else if (data=='normal') {
console.log(globalInfo[data1]);
//Should display "somedata"
}
}
答案 5 :(得分:0)
只需使用eval
即可获取变量数据。例如
var Area300_Data = "300 Area Data";
var Area600_Data = "600 Area Data";
function a(data, data1) {
if (data == 'extra') {
//do something
} else if (data == 'normal') {
console.log(eval(`${data1}_Data`))
//Should display "somedata"
}
}
<button onclick="a('normal','Area300')">Click to see Area300</button>
<button onclick="a('normal','Area600')">Click to see Area600</button>