我得到了一个数组,我对其进行迭代并尝试创建一个变量。
变量的名称是变量,来自数组。所以我使用 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] + '\';');
}
我可以提醒(arr_entries_array[e][1]
) 就好了。我还可以用纯文本替换它,然后提醒变量,它就会起作用。
第二个 eval 行是哪里出错了,有什么意见吗?
最佳答案
为什么不直接在对象
上设置属性?
如果您发现自己在代码中编写了代码,然后使用 eval()
执行它,那么您几乎肯定会做错事情。它速度慢、难以阅读,并且会引入安全漏洞。
JavaScript 对象可以具有您想要的任何属性。为什么不只是 v = new Object(); v['name_dd'] = 随便...;
,或者类似的东西?
关于Javascript eval 多个变量不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1692897/