[英]jQuery works in Chrome but not Safari
我建立了一个网站,使用 jQuery 根据狗的出生日期计算狗的当前年龄。 jQuery 在谷歌浏览器中工作,但在 safari 中不起作用,我无法弄清楚原因。
function puppyAge(){
let d = new Date()
let dob = $(`input[name=puppy-age]`).val()
dob = new Date(dob)
let age = Math.floor((d-dob)/ (7 * 24 * 60 * 60 * 1000))
if (age == 1) {
$(`input[name=puppy-age]`).after(`<p>${age} week</p>`)
}
else {
$(`input[name=puppy-age]`).after(`<p>${age} weeks</p>`)
}
}
$(document).ready(function(){
galleryNavigarion(); // scroll page down to each puppy
parentAge(); // calculate how old (in years) from DOB
puppyAge(); // calculate how old (in Months) from DOB
})
output 在 safari 上给了我“NaN 周”,但在 chrome 上它给了我正确的数字。
这里有几个问题。
如果您包含 HTML 会有所帮助,因为它不是 100% 清楚name="puppy-age"
输入是数字还是日期,但我猜它是一个数字。 在 Stackoverflow 上提出问题时,另一个好主意是让您的代码对其他人尽可能可读。 这包括摆脱代码中未包含的函数的调用,并且与问题没有任何关系: )( parentAge
和galleryNavigarion
)
当你使用$().val()
时,你会得到一个字符串的值。 您应该将其包装在 JavaScript function parseInt()
中,以获得 integer 的值。
其次,您编写dob = new Date(dob)
,其中dob
fx 为 10 将导致日期为 Thu Jan 01 1970 01:00:00 GMT+0100。 所以如果你想用狗的年龄减去今天的日期,你可以这样做;
var d = new Date();
dob = new Date(d.getFullYear() - dob, 1);
第二个参数是1
(月)很重要,因为 JavaScript 否则不知道您传递的第一个参数是一年,而不是毫秒。
第三,您可能想查看Math.floor
,因为它在我的测试中导致很多结果为0
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.