使用 eval JavaScript 创建动态变量
Dynamic variable creation using eval JavaScript
我需要类似包含变量名称/元素ID配对的关联数组之类的东西。
循环遍历此数组/对象,将元素 ID 分配给与其对应的变量名称。像这样:
js小提琴
.HTML:
<input id="fld_1" class="input" type="text" value="bob" /><br>
<input id="fld_2" class="input" type="text" value="fred" /><br>
<input id="fld_3" class="input" type="text" value="pat" /><br>
<input id="mybutt" class="btn" type="button" value="Test" />
.JS:
objFields = {'f1':'fld_1', 'f2':'fld_2', 'f3':'fld_3'};
arrErrors = [];
$('#mybutt').click(function(){
alert('iii');
for (var key in objFields){
// eval(key = objFields[key]);
eval(key) = objFields[key];
alert('f1: ' +f1);
}
});
不需要使用eval
,我只需要将密钥转换为变量名即可。
我哪里做错了?
溶液
JCOC611说对了,但我不清楚我是如何问这个问题的。正如这个实现JCOC611解决方案的修订小提琴中所演示的那样,必须使用变量/字段名称来获取字段内容的值,如下所示:
$('#mybutt').click(function(){
for (var key in objFields){
var tmp = objFields[key];
eval('var ' + key+ ' = $("#' +tmp+ '").val()');
}
});
如果您知道自己在做什么并且绝对确定,请使用以下命令:
eval(key + " = " + JSON.stringify(objFields[key]));
或者,如果需要局部变量:
eval("var " + key + " = " + JSON.stringify(objFields[key]));
否则,我建议您实施其他答案之一。
你根本不需要那个eval()
,你想避免它。您真正需要做的就是:
for (var key in objFields){
alert(key+': '+objFields[key]);
window[key] = objFields[key];
}
会给你:
'f1':'fld_1'
'f2':'fld_2'
'f3':'fld_3'
哪里:
f1 = 'fld_1';
f2 = 'fld_2';
f3 = 'fld_3';
如果是全局变量,则简单如下:
window[key] = objFields[key];
或
window.key = objFields[key];
第二个免疫力稍差weird name
。
eval 函数运行字符串添加代码并返回结果。
您的代码所做的是评估未定义的模糊键,然后尝试将其设置为新值。就像写5=4;
正确的语法:
eval('var ' + key + ' = ' + objFields[key]);
相关文章:
- Javascript动态变量(添加了随机数)
- 传递给 PHP 表单时 JavaScript 动态变量上的未定义索引
- Knockoutjs-带有动态变量的模板
- 在Javascript中连接一个动态变量名
- 将字符串与integer连接,用作jquery中的变量(创建动态变量)
- 在jquery中声明基于动态变量的动态数组
- 使用动态变量从tr访问子td
- 动态变量名称 javascript MVC
- 使用Handlebars从动态变量渲染组件
- JS中的动态变量
- 动态变量名语法
- HashJS中的动态变量
- 使用动态变量名更新JSON中的结果
- 显示动态变量(php和javascript)的总数
- 使用动态变量作为多维对象的键
- 车把:将动态变量传递给零件
- 如何使用 jquery 创建动态变量
- 使用 eval JavaScript 创建动态变量
- JavaScript 解析带有动态变量的嵌套 JSON
- 对 Google API HTTP 请求使用动态变量