繁体   English   中英

jQuery 适用于 Chrome,但不适用于 Safari

[英]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 上提出问题时,另一个好主意是让您的代码对其他人尽可能可读。 这包括摆脱代码中未包含的函数的调用,并且与问题没有任何关系: )( parentAgegalleryNavigarion

当你使用$().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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM