Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/77.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 - Fatal编程技术网

处理日期时的奇怪Javascript行为

处理日期时的奇怪Javascript行为,javascript,html,Javascript,Html,基本上,我尝试在单击时获取数据属性的值,这些值是7,14,30,我尝试将它们插入到一些javascript日期代码中,但它没有显示正确的日期?如果我自己输入这些值,它会提醒正确的日期,但是当我使用一个包含其中一个数据属性的javascript变量时,我会得到远离实际日期的日期 采样点 HTML 当我使用expireDate变量时,它会弄乱日期,如果我在没有变量的情况下手动插入etc 14,一切正常吗 today.setDate(today.getDate() + expireDate); var

基本上,我尝试在单击时获取数据属性的值,这些值是7,14,30,我尝试将它们插入到一些javascript日期代码中,但它没有显示正确的日期?如果我自己输入这些值,它会提醒正确的日期,但是当我使用一个包含其中一个数据属性的javascript变量时,我会得到远离实际日期的日期

采样点

HTML

当我使用expireDate变量时,它会弄乱日期,如果我在没有变量的情况下手动插入etc 14,一切正常吗

today.setDate(today.getDate() + expireDate);
var dd = today.getDate();
var mm = today.getMonth() + 1; //January is 0!
var yyyy = today.getFullYear();

if (dd < 10) {
    dd = '0' + dd
}
if (mm < 10) {
    mm = '0' + mm
}

today = yyyy + '-' + mm + '-' + dd;
alert(today);
});

有人能解释一下它为什么会这样吗?

发布一个答案而不是进一步的评论。OP在评论中提出了以下问题:


dataset.auctionExpire与dataset.auctionExpire之间的区别是什么?为什么e是小写

因为它是这样定义的。如果你查看文档,你会发现

HTML中自定义数据属性的名称以data-开头。它必须只包含字母、数字和以下字符:破折号、点、冒号:、下划线-,但不能包含任何ASCII大写字母A到Z

但是,在HTML中,您可以像这里一样使用大写字母定义数据属性:

<span data-auctionExpire="7"

clickmethe数据属性data auctionExpire实际上无效。必须使用e.target.dataset.auctionexpire来获取数据属性值。请注意“E”为小写。dataset.auctionExpire与“E”之间的区别是什么?为什么e是小写?谢谢你,阿洛蒂,看来还是显示了错误的日期?由于某种原因,当按下7时,显示的是正确的日期,但当按下14或30时,显示的是错误的日期?提交了一个答案而不是评论,因为它的寿命很长,这是一个惊人的答案,感谢你花时间做了一个部门内的回答我不敢相信我没有想到它是一个字符串或至少检查它我肯定会检查它是否是PHP,我只是假设Javascript将数字转换为数字,如果Javascript认为它是一个数字,我想我读到这是Javascript在某处做的事情。无论如何,谢谢你的回答
today.setDate(today.getDate() + expireDate);
var dd = today.getDate();
var mm = today.getMonth() + 1; //January is 0!
var yyyy = today.getFullYear();

if (dd < 10) {
    dd = '0' + dd
}
if (mm < 10) {
    mm = '0' + mm
}

today = yyyy + '-' + mm + '-' + dd;
alert(today);
});
<span data-auctionExpire="7"