[英]Changing variable name with javascript and jQuery
如何在jQuery中的变量名之间切换并更改它们?
//predefined variables
var s1='';
var d2='';
//trying to change variables by .attr() parameter but no luck
$('body').on('click','span', function() {
var $(this).parent().attr('data-scan')=$(this).attr('id');
});
HTML
<div data-scan="s1"><span id="banana">Banana</span><span id="apple">Apple</span></div>
<div data-scan="d2"><span id="orange">Orange</span><span id="apple">Apple</span></div>
如何更改特定变量? 我不关心改变attr papameter,我只需要更改预定义的全局var参数!
你使用错误的attr()语法
语法:attr(attributeName,value)
更改
var $(this).parent().attr('data-scan')=$(this).attr('id');
至
$(this).closest('div').attr('data-scan',$(this).attr('id'));
你的代码就是
$('body').on('click','span', function() {
debugger
$(this).closest('div').attr('data-scan',$(this).attr('id'));
s1=$(this).closest('div').attr('data-scan');
alert(s1);
});
首先,您的data-scan
属性的html是错误的,您没有收尾报价。
其次,您可以通过data()
jquery函数来访问data
属性。
第三,您不能使用=
运算符设置值。
你想要这样的东西:
$(this).parent().data('scan', $(this).attr('id'));
或者,没有data()
函数:
$(this).parent().attr('data-scan', $(this).attr('id'));
要获得该值,您可以执行以下操作之一:
var dataScan = $(this).parent().data('scan');
要么
var dataScan = $(this).parent().attr('data-scan');
您根据数据扫描值设置变量的确切要求
根据您的评论和代码,我认为您还不清楚自己要做什么。 我想我已经解决了,你想使用data-scan
值来确定应该设置哪个全局变量...
//predefined variables
var s1='';
var d2='';
$('body').on('click','span', function() {
var variableType = $(this).parent().data('scan');
var valueToSet = $(this).attr('id');
if(variableType == "s1"){
s1 = valueToSet;
}
else if(variableType == "d2"){
d2 = valueToSet;
}
});
但是,如果你有很多变量,那么使用这么多if / else语句并不理想。 所以你可以使用javascript eval()
函数。
var variableType = $(this).parent().data('scan');
var valueToSet = $(this).attr('id');
eval("" + variableType + " = '" + valueToSet + "';");
但是要小心,你的eval代码会受到用户注入的值(不管javascript对用户是否安全)
你很亲密!
// set
$('#item').attr('data-scan', 'set new value');
// get
var dataScan = $('#item').attr('data-scan');
console.log(dataScan); //=> set new value
如果你使用.prop()
而不是.attr()
可能是最好的
$(this).parent().prop('data-scan', $(this).attr('id') );
正如jQuery api文档所述
从jQuery 1.6开始,.attr()方法为尚未设置的属性返回undefined。 此外,.attr()不应用于普通对象,数组,窗口或文档。 要检索和更改DOM属性,请使用.prop()方法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.