我有一个按钮:
<button class="btn btn-info continue">
<i class="ace-icon fa fa-check bigger-110"></i>
Continue
</button>
的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变量的名称。
例如,我上面提供的元素位于form
中,其ID ='example_id'。 currForm.attr('id')
会给我example_id
,我想设置一个变量example_id
并为其指定一个值。
var example_id = 'some value';
答案 0 :(得分:6)
这里有3个选项。
eval
(不推荐)您可以使用Javascript函数eval
来实现您的目标。但要注意,这是不推荐(我强调了两次,希望你理解!)。
不要不必要地使用eval!
eval()是一个危险的函数,它执行它以调用者的特权传递的代码。如果您使用可能受恶意方影响的字符串运行eval(),您最终可能会使用您的网页/扩展程序的权限在用户的计算机上运行恶意代码。更重要的是,第三方代码可以看到调用eval()的范围,这可能会导致类似函数不易受影响的攻击。</ p>
它会像那样使用:
eval('var ' + varName + ' = "something";');
eval
,仍然不是真正推荐的)此方法包括在全局窗口对象上使用JavaScript提供的对象表示法。这会污染全局窗口范围,并且可以被其他不良的JS文件覆盖。如果您想了解有关该主题的更多信息,这是一个很好的问题:Storing a variable in the JavaScript 'window' object is a proper way to use that object?。
要使用该方法,您可以这样做:
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
}
答案 1 :(得分:2)
您可以使用javascript对象执行此操作:
var currForm = $(this).parents('form');//form id="hello"
var obj = {};
obj[currForm.attr('id')] = 30;
console.log(obj.hello)
答案 2 :(得分:1)
您可以使用和对象将变量存储在:
var variables = {};
添加变量只需输入:
variables[name] = value;
并访问值:
variables[name]
请在此处查看:jsFiddle
按钮2读取变量[formid]的值,按钮1将formid设置为已提交
答案 3 :(得分:0)
实现您真正想要的最佳选择是使用eval(),如下所示:
eval("var " + currForm.attr('id');
点击此链接 - &gt;
答案 4 :(得分:0)
请尝试以下方法之一:
$(this).attr(example_id, "value")
或者
window[ currForm.attr(id)] = 12;
或者
window[ this.id ] = 12;
答案 5 :(得分:-1)
使用eval(但不推荐):
var id = 'that_id';
eval(id+" = 'other id';");
alert(that_id); // results: 'other id'