Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/475.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 根据变量名称将变量设置为已存在的变量_Javascript_Jquery - Fatal编程技术网

Javascript 根据变量名称将变量设置为已存在的变量

Javascript 根据变量名称将变量设置为已存在的变量,javascript,jquery,Javascript,Jquery,假设在呈现页面时,我有一个如下所示的变量: var test1='这是一个html字符串' 我有一个函数,看起来像: function addRow(v) { $.each(v, function (k,v) { if (k == 'jsvar') { cableHTML = 'test1' insertCabling(parentId, cableHTML) } }); } cableHTML设置的变量取决于js

假设在呈现页面时,我有一个如下所示的变量:

var test1='这是一个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
变量。(希望)有一种简单的方法来实现这一点吗?

您需要去掉代码中
test1
jsvar
的引号,除非您希望k等于字符串
'jsvar'
,并且希望cableHTML等于
'test'

var test1 = 'this is a string of html';

function addRow(v) {
  $.each(v, function(k,v) {
    if (k == jsvar) {
      cableHTML = test1
      insertCabling(parentId, cableHTML)
    }
  });
}
根据您所说的“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"]);
    }
  }

只要它在范围内。。。只需删除test1周围的引号。另外,您是否意识到您正在使
cableHTML
成为一个全局变量?对不起,我没有包含重要信息--test1可能是test2,或者其他什么。Test1/test2/test3等,在页面加载时都作为变量存在。“jsvar”的值对指定了cableHTML需要的变量,就像您应该使用数组而不是多个索引变量名一样。然后执行类似于
cableHTML=testArray[v]的操作重要问题-从哪里知道要分配哪个变量?测试1,测试2还是测试3?我想斯默尼说的很对…谢谢。这正是我需要的。我试着做了一个数组。。但是我正在编写的代码太旧太难看了,很难做得更好。@RickyMason,我不确定你是否看到我在我的答案中添加了内容(关于删除
each()
循环)。如果您正在使用
eval()
(您不应该这样做),您可以这样做来代替整个
each()
块:
尝试{(row[“jsvar”]&&insertCabling(parentId,eval(row[“jsvar”]);}catch(e){}
。另请注意,我将
addRow()
参数名称更改为
。谢谢。我在你建议的改变中工作过,现在效果很好。