让我们假设,当页面呈现时,我有一个看起来像的变量:
var test1 = 'this is a string of html'
我有一个看起来像的函数:
function addRow(v) {
$.each(v, function (k,v) {
if (k == 'jsvar') {
cableHTML = 'test1'
insertCabling(parentId, cableHTML)
}
});
}
cableHTML
设置的变量取决于jsvar
的值。所以它会根据选择的内容而改变。
test1
可能是test2
,或其他内容。 test1 / test2 / test3等,在加载时都作为变量存在于页面上。 jsvar
的值对决定了cableHTML
所需的变量。
我想将cableHTML
设置为已加载的test
变量。是否(希望)有一种简单的方法来实现这一目标?
答案 0 :(得分:2)
基于你所说的“jsvar的值对指示变量cableHTML
需要”,假设值为test1
,test2
等。你可以这样做:
function addRow(v) {
$.each(v, function (k,v) {
if (k == 'jsvar') {
cableHTML = eval("v");
insertCabling(parentId, cableHTML)
}
});
}
但是你最好使用一个数组(eval()
并且索引变量名是你应该总是试图避免的),并做类似的事情:
function addRow(v) {
$.each(v, function (k,v) {
if (k == 'jsvar') {
cableHTML = myArray[v];
insertCabling(parentId, cableHTML)
}
});
}
jsvar
的值是myArray
数组中所需项目的关键字。
此外,如果您未在此范围内的其他位置声明var cableHTML
,那么您将使其成为全局变量。在您将其作为参数传递给insertCabling()
时,我假设您不希望/需要全局,您只需将var
添加到cableHTML = ...
在更多地查看您的代码之后,似乎each()
似乎是不必要的:
function addRow(row) {
if(row["jsvar"]){
insertCabling(parentId, row["jsvar"]);
}
}
答案 1 :(得分:0)
除非您希望k等于字符串test1
,并且您希望cableHTML等于jsvar
。
'jsvar'