【问题标题】:Javascript issue with internet explorer, works fine in google chrome but not in ie,Internet Explorer 的 Javascript 问题,在 google chrome 中可以正常工作,但在 ie 中不行,
【发布时间】:2016-02-27 00:25:27
【问题描述】:

您好,我有一个问题,即不显示我的 javascript,我有点困惑,因为它在 google chrome 中运行良好。我尝试了 f12 调试并启用了 javascript,但没有任何运气,因此非常感谢任何帮助。在 chrome 中,它显示正确的天数,而在 ie 中,它只显示 NaN。

var montharray=new Array("Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec")

function countup(yr,m,d){
 var today=new Date()
var todayy=today.getYear()
if (todayy < 1000)
todayy+=1900
var todaym=today.getMonth()
var todayd=today.getDate()
var todaystring=montharray[todaym]+" "+todayd+", "+todayy
var paststring=montharray[m-1]+" "+d+", "+yr
var difference=(Math.round((Date.parse(todaystring)-Date.parse(paststring))/(24*60*60*1000))*1)
difference+=" days"

document.write("<span style=\"color:#A4A4A4;font-size: 3em; \"> It\'s been  "+difference+" since the last incident.<\/span>")

}
//enter the count up date using the format year/month/day

countup('<?php echo $date1; ?>')

【问题讨论】:

  • 欢迎来到网络开发。
  • @Virtyaluk 提出了一个有效的问题:$date1 还返回了什么,哪个 IE?它在 Edge 中运行良好,除非您的值如评论建议的那样(如格式 '2016/02/25')返回 NAN days
  • 取一个已知的日期对象很奇怪......把它变成字符串,转身然后在那个字符串上使用 Date.parse()
  • 好吧,我再说一遍,&lt;?php echo $date1; ?&gt; 究竟返回了什么?
  • 您好,很抱歉迟到了回复,因为我一直在工作,$date1 返回一个 mysql 日期,将是 2016/02/25,但我尝试将日期更改为不同的格式,但没有成功跨度>

标签: javascript google-chrome internet-explorer


【解决方案1】:

&lt;?php echo $date1; ?&gt; 究竟返回了什么?因为看起来countup 需要 3 个参数,但只需要 1 个。

【讨论】:

  • 您不应将此作为答案发布,而应作为评论发布。
  • @vol7ron 我没有足够的声望。
  • 他们应该使用不同的指标。
  • @vol7ron 绝对!系统说我需要 50 声望才能发布 cmets,但同时它说我需要在人们的帖子上留下一些 cmets 才能获得 50 声望。
  • 你没有获得 cmets 的声誉
【解决方案2】:

如果您的 JavaScript 注释正确,则您将值作为“YYYY/MM/DD”传递,这不是您的函数所期望的格式。您的函数需要三个不同的数字/字符串countup('02','25','2016'),而不是countup('2016/02/25')

错误发生在您的var paststring = montharray[m-1]+" "+d+", "+yr。这将导致undefined undefined, 2016/02/25,这不是一个有效的日期。

它在 Chrome 中工作的原因是因为Date.parse('undefined undefined, 2016/02/25') 实际上可以生成日期,而其他浏览器(包括 Firefox)做了勇敢的事情并失败了。

请参阅this answerthis answer 了解更多信息。


要修复您的代码,请选择一个:

  • 调整您的函数以接收您想要发送的输入
  • 调整函数调用以发送函数参数定义的正确参数
  • 使用另一个库,例如 moment.js 来完成所有计算 - 它是 JS 可用的最佳日期管理库之一

【讨论】:

  • 感谢您的评论,回显日期来自 mysql,所以我猜它的格式错误,我尝试了不同的格式,但它仍然是南天,
  • $date1=$row['date_of_incident'];
  • @MFC 将您的函数更改为只有一个日期参数。您无需将其分解为日、月和年,因为您没有将其分解。
猜你喜欢
  • 2015-02-08
  • 1970-01-01
  • 2015-12-30
  • 1970-01-01
  • 1970-01-01
  • 2020-03-08
  • 2015-09-13
  • 2020-08-31
  • 2012-11-01
相关资源
最近更新 更多