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

时间:2014-06-30 19:53:59

标签: javascript jquery html custom-data-attribute

我需要保存一个值"磁盘大小"对于表中的td,然后将相同的值设置为另一个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")));
    }
}

我正在处理两个表,其中属性的值为&#34; data-disk-size&#34;应该从一个td复制到另一个。在代码中,x是第一个表td的jQuery UI.draggable对象,而td [currentDisk]是第二个表td。我想设置td [currentDisk]。&#34; data-disk-size&#34; = x。&#34; data-disk-size&#34;。我收到错误&#34; Uncaught TypeError:undefined不是函数&#34;在这一行:

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

我该怎么做到这一点?我想广泛的问题是如何在JavaScript中获取和设置自定义属性?

(这是我向Stack Overflow发表的第一篇文章,所以如果我做错了,我会道歉。)

3 个答案:

答案 0 :(得分:0)

.data是jQuery。

Vanilla JS方式是:

td[currentDisk].setAttribute("data-disk-size",x.getAttribute("data-disk-size"));

答案 1 :(得分:0)

正如其他人所提到的,你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"));

答案 2 :(得分:0)

如果您正在使用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"));