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

时间:2014-06-30 14:48:09

标签: javascript jquery

让我们假设,当页面呈现时,我有一个看起来像的变量:

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变量。是否(希望)有一种简单的方法来实现这一目标?

2 个答案:

答案 0 :(得分:2)

基于你所说的“jsvar的值对指示变量cableHTML需要”,假设值为test1test2等。你可以这样做:

  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'
相关问题