首先,您的属性 htmldata-scan
是错误的,您没有右引号。
其次,可以通过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 语句并不理想。所以你可以使用javascripteval()
函数。
var variableType = $(this).parent().data('scan');
var valueToSet = $(this).attr('id');
eval("" + variableType + " = '" + valueToSet + "';");
有关示例,请参见此处
但请注意,您的 eval 代码会受到用户注入值的影响(并不是说 javascript 对用户来说是安全的)