获取和设置JavaScript中的数据属性

获取和设置JavaScript中的数据属性,javascript,jquery,html,custom-data-attribute,Javascript,Jquery,Html,Custom Data Attribute,我需要在表中为一个td保存一个值“disk size”,然后将相同的值设置为另一个td。我正在尝试使用数据属性,但不知道如何实现这一点。这是我的密码: function addOnDrop(x) { if(currentDisk < 12) { var td = document.getElementsByClassName("vArray-td"); td[currentDisk].innerHTML = x.html();

我需要在表中为一个td保存一个值“disk size”,然后将相同的值设置为另一个td。我正在尝试使用数据属性,但不知道如何实现这一点。这是我的密码:

function addOnDrop(x)
{
    if(currentDisk < 12)
    {
        var td = document.getElementsByClassName("vArray-td");
        td[currentDisk].innerHTML = x.html();
        td[currentDisk].style.backgroundColor = "black";
        td[currentDisk].data("disk-size",x.data("disk-size"));
        array.push(parseInt(x.data("disk-size")));
    }
}
我该如何做到这一点?我想主要的问题是如何在JavaScript中获取和设置自定义属性


(这是我第一次发布堆栈溢出,因此如果我做错了什么,我深表歉意。)

.data
是jQuery

方法是:


正如其他人所提到的,您的
data
是一个jQuery方法。因此,以下行无效,因为
td[currentDisk]
是DOM元素,而不是jQuery对象:

td[currentDisk].data("disk-size",x.data("disk-size"));
它应该更像这样:

$(td[currentDisk]).attr("data-disk-size",$(x).attr("data-disk-size"));

如果您使用jQuery,我建议您始终如一地使用它:

var td = $(".vArray-td").eq(currentDisk);
td.html(x.html()).css("background-color", "black")
                 .data("disk-size", x.data("disk-size");
array.push(x.data("disk-size"));

您正在尝试对本机DOM元素调用jQuery方法。
data()
是一个jQuery函数。您试图将其直接应用于DOM元素,而不是jQuery包装器。我建议您不要在原始Javascript和jQuery之间来回切换,如果这让您感到困惑的话。
$(td[currentDisk]).attr("data-disk-size",$(x).attr("data-disk-size"));
var td = $(".vArray-td").eq(currentDisk);
td.html(x.html()).css("background-color", "black")
                 .data("disk-size", x.data("disk-size");
array.push(x.data("disk-size"));