Javascript eval多个变量不起作用

Javascript eval多个变量不起作用,javascript,dynamic,variables,eval,Javascript,Dynamic,Variables,Eval,我得到了一个数组,我对它进行迭代并尝试创建一个变量 变量名为variable,来自数组。所以我使用eval(这段代码只在本地计算机上使用)来创建变量。 奇怪的是,我可以创建一个变量并向其内容中添加纯文本。但每当我试图设置一个变量时,我什么也得不到 我还使用Prototype轻松地遍历DOM var arr_entries = some_DOM_element; arr_entries_array = new Array(); arr_entries_array[0] = new Array()

我得到了一个数组,我对它进行迭代并尝试创建一个变量

变量名为variable,来自数组。所以我使用eval(这段代码只在本地计算机上使用)来创建变量。 奇怪的是,我可以创建一个变量并向其内容中添加纯文本。但每当我试图设置一个变量时,我什么也得不到

我还使用Prototype轻松地遍历DOM

var arr_entries = some_DOM_element;

arr_entries_array = new Array();
arr_entries_array[0] = new Array();
arr_entries_array[0][0] = 'name_dd';
arr_entries_array[0][1] = arr_entries.next(13).down().next(1).innerHTML;

arr_entries_array[1] = new Array();
arr_entries_array[1][0] = 'name_pl';
arr_entries_array[1][1] = arr_entries.next(14).down().next().innerHTML;

arr_entries_array[2] = new Array();
arr_entries_array[2][0] = 'name_pm';
arr_entries_array[2][1] = arr_entries.next(15).down().next().innerHTML;

arr_entries_array[3] = new Array();
arr_entries_array[3][0] = 'name_hd';
arr_entries_array[3][1] = arr_entries.next(17).down().next().innerHTML;

arr_entries_array[4] = new Array();
arr_entries_array[4][0] = 'name_sr';
arr_entries_array[4][1] = arr_entries.next(16).down().next().innerHTML;

for(e = 0; e < arr_entries_array.length; e++)
{
    eval('var arr_entry_' + arr_entries_array[e][0] + ';');

    eval('arr_entry_' + arr_entries_array[e][0] + ' = \'' + arr_entries_array[e][1] + '\';');
}
var arr\u entries=一些DOM\u元素;
arr_entries_array=新数组();
arr_条目_数组[0]=新数组();
arr_条目_数组[0][0]=“name_dd”;
arr_entries_array[0][1]=arr_entries.next(13).down().next(1).innerHTML;
arr_条目_数组[1]=新数组();
arr_条目_数组[1][0]=“name_pl”;
arr_entries_array[1][1]=arr_entries.next(14).down().next().innerHTML;
arr_条目_数组[2]=新数组();
arr_条目_数组[2][0]=“name_pm”;
arr_entries_array[2][1]=arr_entries.next(15).down().next().innerHTML;
arr_条目_数组[3]=新数组();
arr_条目_数组[3][0]=“name_hd”;
arr_entries_array[3][1]=arr_entries.next(17).down().next().innerHTML;
arr_条目_数组[4]=新数组();
arr_条目_数组[4][0]=“name_sr”;
arr_entries_array[4][1]=arr_entries.next(16).down().next().innerHTML;
对于(e=0;e
我可以发出警报(
arr\u entries\u array[e][1]
)很好。我也可以用纯文本替换它,然后警告变量,它就会工作


第二条评估线是哪里出了问题,有什么意见吗?

我建议找到另一种方法。即使您只在自己的计算机上运行代码,并且没有暴露安全违规行为,从eval到公共eval仍然是错误的,效率极低。我建议您永远不要使用eval,因为它可能是不可预测的,而且任何其他解决方案都可能更高效地处理。

根据这些Dom元素的innerHTML值,您可能会在eval中遇到语法错误

尝试使用firebug或其他调试工具来找出第二次评估中的错误消息,您可能会找到罪魁祸首

我的钱在新的线路上(
\n
)是问题所在

要解决这个问题,您需要正确地转义传递到eval中的值,以便它们是文本字符串,您可以在eval语句中使用它们。e、 g

var text = "' quotes can be tricky"
eval("var variable = '" + text + "';"); //syntax error
eval("var variable = '" + text.replace(/'/g, "\'") + "';"); //works
var text2 = "\n new lines also"; //this may not be 100% correct, you get the idea
eval("var variable = '" + text2 + "';"); //another syntax error
eval("var variable = '" + text2.replace(/\n/g, "\\n") + "';"); //works
为什么不在
对象上设置属性呢?
如果您发现自己在代码中编写代码,然后使用
eval()
执行代码,那么几乎可以肯定您的操作是错误的。它速度慢,难以阅读,并引入了安全漏洞


JavaScript对象可以具有您想要的任何属性。为什么不干脆
v=newobject();v['name_dd']=随便什么,或者类似的东西?

谢谢!似乎这就是问题所在。我似乎无法在示例中找到正确的实现方法。我发现自己创建数组和对对象做完全相同的事情。我仍然需要创建变量名,有什么提示吗?但是为什么需要使用新名称创建变量呢?如果我说
dynamic_vars=newobject()newname
比仅仅使用
dynamic\u vars[“newname”]
更好吗?