如何在数据属性中添加新数据

How to add a new data in data attribute

我用车把做了倒计时,它被添加到我的元素的数据属性中,但我想要的是添加当前年份。我使用的框架倒计时是接受“2017/06/14”这种数据倒计时格式的最终​​倒计时我的 html 是这样的:

<div class="cd" id="cd" data-countdown="{{month}}/{{day}} {{time}}"></div>

我想要实现的是将第一个索引中的年份添加为

data-countdown="2017/{{month}}/{{day}} {{time}}"

到目前为止,这是我的 js 脚本:

var currentDate = new Date().getFullYear();

$('.cd').each(function(){
  //get each data-attribute
  var a = $(this).data("countdown");
  var b = a.split(" ");
  //add the current year to it
  b.unshift(currentDate);
  c = b[0]+'\/'+b[1]+'\/'+b[2];
  $(this).data("countdown", c); });

只需将当前年份添加到现有数据中即可。

$('.cd').each(function(){
  var getDataCountDown = $(this).data("countdown");
  var getYear = new Date().getFullYear(); // or whatever the year you want
  var newData = getYear + "/" + getDataCountDown;
  $(this).data("countdown", newData); 
});

更新

正如 Jaromanda X 所说它不会改变 DOM,如果我们需要改变 DOM 也意味着我们可以去

$(this).attr("data-countdown", newData);

而不是

$(this).data("countdown", newData);

您的代码运行良好!

但是正如您所说,您收到了日期解析错误,您可以按照 @Rajesh 的建议将年份附加到现有数据属性值,如下所示。

$('.cd').each(function(){ 
 $(this).data("countdown", new Date().getFullYear()+ "/" + $(this).data("countdown")); 
 alert($(this).data("countdown"))
});

使用 $(this).data("countdown", c) 您将无法通过检查看到更改,但如果您通过 $(this).data("countdown") 提醒它,您可以看到它提醒更改的值,因为 .data 管理元素的数据对象不是 DOM.

因此,如果您希望将来使用它,可以使用 $(this).data("countdown", c),否则使用 $(this).attr("data-countdown", c);

希望对您有所帮助!