Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/465.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 循环元素上的每个数据属性,并从中创建变量_Javascript_Html_Jquery - Fatal编程技术网

Javascript 循环元素上的每个数据属性,并从中创建变量

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');

我试图循环我的元素拥有的每个数据属性,并将其存储为变量,因为它有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');
    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;
});