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

时间:2017-06-14 05:34:33

标签: javascript jquery jquery-countdown

我用把手制作了倒计时器,它被添加到我的元素的数据属性中,但我想要的是添加当前年份。我使用的框架倒计时是接受这个数据倒计时格式“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); });

2 个答案:

答案 0 :(得分:0)

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

$('.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);

答案 1 :(得分:0)

您的代码工作正常!

但正如您所说的那样,您收到了日期解析的错误,您可以按照@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管理元素&# 39; s数据对象不是DOM。

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

希望这有帮助!