获取元素的ID并将其设置为变量
我有一个按钮:
ONCLICK:
$(".continue").click(function(e) { currForm = $(this).parents('form'); e.preventDefault(); });
我很容易得到id: currForm.attr('id');
,但我可以将此id的值设置为变量。
像php的变量变量:
$a = 'hello'; $$a = 'world'; echo $hello;
编辑 :我不想更改元素的ID。 我想获取此ID并将其用作javascript变量的名称。 例如,我在上面提供的元素是具有ID =’example_id’的forms。 currForm.attr('id')
会给我一个example_id
,我想设置一个变量example_id
并为其赋值。
var example_id = 'some value';
这里有3个选项。
eval
(不推荐)
您可以使用Javascript函数eval
来实现您想要的效果。 但要注意,这不推荐 (我强调了两次,希望你理解!)。
不要不必要地使用eval!
eval()是一个危险的函数,它执行它以调用者的特权传递的代码。 如果您使用可能受恶意方影响的字符串运行eval(),您最终可能会使用您的网页/扩展程序的权限在用户的计算机上运行恶意代码。 更重要的是,第三方代码可以看到调用eval()的范围,这可能导致类似函数不受影响的方式的可能攻击。
它会像那样使用:
eval('var ' + varName + ' = "something";');
窗口对象表示法(优于eval
,仍然不是真的推荐)
此方法包括在全局窗口对象上使用JavaScript提供的对象表示法。 这会污染全局窗口范围,并且可以被其他不良的JS文件覆盖。 如果您想了解有关该主题的更多信息,这是一个很好的问题: 在JavaScript“窗口”对象中存储变量是使用该对象的正确方法吗? 。
要使用该方法,您可以这样做:
window[varName] = something; alert(window[varName]);
使用对象(推荐)
最好的解决方案是创建自己的变量范围。 例如,您可以在全局范围内创建变量并为其分配对象。 然后,您可以使用对象表示法创建动态变量。 它的工作方式与窗口相同:
var globalScope = {}; function awesome(){ var localScope = {}; globalScope[varName] = 'something'; localScope[varName] = 'else'; notSoAwesome(); } function notSoAwesome(){ alert(globalScope[varName]); // 'something'; alert(localScope[varName]); // undefined }
你可以使用javascript对象来做到这一点:
var currForm = $(this).parents('form');//form id="hello" var obj = {}; obj[currForm.attr('id')] = 30; console.log(obj.hello)
您可以使用和对象将变量存储在:
var variables = {};
添加变量只需输入:
variables[name] = value;
并访问该值:
variables[name]
在这里查看: jsFiddle
按钮2读取变量[formid]的值,按钮1将formid设置为提交
请尝试以下方法之一:
$(this).attr(example_id, "value")
要么
window[ currForm.attr(id)] = 12;
要么
window[ this.id ] = 12;
你最好的选择是使用eval(),就像这样:
eval("var " + currForm.attr('id');
检查此链接 – >
Javascript中的动态变量
使用eval(但不推荐):
var id = 'that_id'; eval(id+" = 'other id';"); alert(that_id); // results: 'other id'