0

我在 javascript 文件中有许多数组我想在计算中使用的数组是:

 var planets_num = []

如果我想使用某个数组,我只需使用:

  arraytouse = planets_num

我想要做的是使用输入:

 <input type="text" id="mynewtext" value="Enter array name to use">

然后是一个函数来获取“mynewtext”的值:

 function getnewform1 () {
 newtext=document.getElementById('mynewtext').value
 . . .
 }

假设我想要的 var newtext = "abc" :

 abc = planets_num

即来自数组 abc 的值将被放置在 planets_num 数组中

希望这是有道理的

TIA

4

3 回答 3

2

如果planets_num在全局范围内,也可以这样引用:

arraytouse = window['planets_num'];

对象上的变量也是该对象上同名的可索引值。对于全局范围变量,它们位于window对象上。

所以你可以做这样的事情:

arraytouse = window[document.getElementById('mynewtext').value];

如果数组不在全局范围内,那么您可以将它们组织为某个对象的属性并以相同的方式引用该对象:

arraytouse = objectOfArrays[document.getElementById('mynewtext').value];
于 2013-10-29T22:39:13.463 回答
0

@David 的答案更清洁更有效,但这里有一个替代方案eval

var my_array = [];

$("button")[0].onclick = function()
{
    var input_text = $("input")[0].value;
    var array_input = eval(input_text);
}

小提琴在这里:

http://jsfiddle.net/W3NW9/3/

于 2013-10-29T22:47:44.467 回答
0

您应该考虑使用对象和属性,而不是创建全局变量:

var data = {
  planets_num: [],
  another_arr:[]
}

现在你可以这样做:

var arraytouse = data[document.getElementById('mynewtext').value];

但当然你应该编写健壮的代码,例如:

var input = document.getElementById('mynewtext');

// Make sure an element was found before trying to access its value
var arraytouse = input && data[input.value];

// Make sure the value resolved to something truthy before
// trying to use it
if (arraytouse) {
  ...
}
于 2013-10-29T23:59:37.017 回答