获取元素的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'