Javascript 循环元素上的每个数据属性,并从中创建变量
我试图循环我的元素拥有的每个数据属性,并将其存储为变量,因为它有17个属性,我不想“垃圾邮件”它Javascript 循环元素上的每个数据属性,并从中创建变量,javascript,html,jquery,Javascript,Html,Jquery,我试图循环我的元素拥有的每个数据属性,并将其存储为变量,因为它有17个属性,我不想“垃圾邮件”它 HTML <tr data-a="1" data-b="2" data-c="3" data-d="4"..........> JS that i dont want $('.trData').click(function (){ var a = $(this).attr('data-a');
HTML
<tr data-a="1" data-b="2" data-c="3" data-d="4"..........>
JS that i dont want
$('.trData').click(function (){
var a = $(this).attr('data-a');
var b = $(this).attr('data-b');
var c = $(this).attr('data-c');
var d = $(this).attr('data-d');
var e = $(this).attr('data-e');
..........................
您会很高兴听到DOM基本上为您完成了这项工作,在这一过程中,它删除了
数据
前缀,并将烤肉盒
转换为骆驼盒
,等等。它是通过
实例:
$(“.trData”)。单击(函数(){
for(Object.entries(this.dataset)的常量[名称,值]){
//在这里,`name`将是`a`、`b`、`c`,等等,值将是`1`、`2`、`3`,等等。
//请注意,这些值已被神奇地转换为数字
log(`${name}=${value}`);
}
});代码>
点击我
使用选择器tr[data-a]
然后您可以使用data()
和无参数在单个对象中获取所有data-
值
$('tr[data-a]')。单击(函数(){
log($(this.data());
})
项目1
多亏了@charlietfl,我才让它工作起来
$("tr[data-a]").click(function () {
$.each($(this).data(), function (key, value) {
var key = value;
});
注意data()
只是data-*
属性的访问器。var i=data[i]代码>应该怎么做?是的,我知道数据还有很多,但我可以得到attr值。问题是用循环中的数据attr的名称创建变量。这是否回答了您的问题?使用javascript(不是jquery)el.attributes
会为您提供所有属性,并将它们筛选为以data-
开头的属性。请注意data()
只是data-*
属性的访问器。是的,其中一个正在运行!另一个有this.dataset
问题。谢谢老兄,我今天学到了新东西!厉害!如何创建var-tho<代码>变量${name}=${value};不工作
和var$name=$value;不起作用
什么是正确的语法?@AlexisGarcia-你不能,你不能像那样动态创建变量。您可以动态创建属性。如果您想这样做,只需直接使用this.dataset
(this.dataset.a
,this.dataset.b
,等等)。lol这样做的目的是从数据属性中创建变量。假设我有data foo=“bar”
我想创建一个值为“bar”的变量“foo”。问题是,我有17个我不想垃圾邮件行,我想做它在一个周期data-foo2=“bar2”data-foo3=“bar3”data-foo4=“bar4”data-foo5=“bar5”…
var-foo2=bar2 var-foo3=bar3 var-foo4=bar4 var-foo5=bar5
@AlexisGarcia-:-)在这种情况下,您可能不需要单独的变量。(我以为您想要一个循环,来自for(vari in data)
)
$(".trData").click(function () {
for (const [name, value] of Object.entries(this.dataset)) {
// Here, `name` will be `"a"`, `"b"`, `"c"`, etc., and value will be `"1"`, `"2"`, `"3"`, etc.
// Note that the values have been magically converted to numbers for you
console.log(`${name} = ${value}`);
}
});
$("tr[data-a]").click(function () {
$.each($(this).data(), function (key, value) {
var key = value;
});