【发布时间】:2020-03-28 17:52:09
【问题描述】:
我对 Javascipt 和 HTML 非常陌生,我只想创建一个数字的更新显示。我目前正在使用 Weebly 托管网站/运行此代码,但我希望随着这些语言变得更好而改变这一点。我目前遇到的问题是,当我直接在我的计算机上运行代码时,它似乎运行良好,除了代码会随着时间的推移而变慢。当我在 Weebly 中运行它时,在我的计算机上它会将毫秒这个词强制为较小的字体,否则可以正常工作。在 Safari 中的 Iphone 上,我看到 this(我将颜色更改为红色的原因是因为我最终想将其设置为黑色,因为在 iPhone 上它显示为灰色,我不希望这样)最终红色文字消失,灰色文字没有更新。
这里是代码的相关部分
var target = 1578135600000
var rightnow = 1578135600000 - currdate.getTime()
var rightnowstr = "(" + rightnow + " milliseconds)"
var rightnowstr = rightnowstr.fontcolor("black")
document.write(rightnowstr.fontsize(30))
document.write("<br>")
var substring = "until Columbia Invy"
document.write(substring.fontsize(30))
var rightnow2
setInterval(function(){
currdate = new Date()
rightnow2 = String(1578135600000 - currdate.getTime())
rightnow2 = rightnow2.fontcolor("red")
document.body.innerHTML = document.body.innerHTML.replace(rightnow, rightnow2)
rightnow = 1578135600000 - currdate.getTime()
// document.body.innerHTML = document.body.innerHTML.replace(rightnow, rightnow = 1578135600000 - currdate.getTime())
},1);
我也有一个代码版本,在电脑上完美运行,但在 Iphone 上,毫秒数是灰色的,不会更新。
var target = 1578135600000
var rightnow = 1578135600000 - currdate.getTime()
var rightnowstr = "(" + rightnow + " milliseconds)"
var rightnowstr = rightnowstr.fontcolor("black")
document.write(rightnowstr.fontsize(30))
document.write("<br>")
var substring = "until Columbia Invy"
document.write(substring.fontsize(30))
var rightnow2
setInterval(function(){
currdate = new Date()
document.body.innerHTML = document.body.innerHTML.replace(rightnow, rightnow = 1578135600000 - currdate.getTime())
},1);
无论哪种方式,我只想要在 Iphone(在 Safari 上)和 Chrome 上显示黑色文本的东西,它会不断更新毫秒数。
【问题讨论】:
-
每毫秒运行一个函数会很快消耗浏览器内存。重绘也很昂贵,每次更新 DOM 时都会发生。用更合理的时间尝试你的代码,比如 100 毫秒,然后调试它。然后缩短时间,直到您开始遇到问题。另请参阅:stackoverflow.com/questions/9647215/…
-
快速更新 DOM 是违反直觉且成本高昂的。您是否尝试过将毫秒数更改为更高的值,例如 16 毫秒?这将为您提供 60FPS 更新,这是人眼可以感知的最高帧速率。您将获得 16 倍的价格 :)。
-
我已经放慢了速度,实际上在我上传到 Weebly 的所有版本中,我都使用了诸如 337 毫秒之类的间隔(只是为了让最后一位数字不断变化)。我不认为减速错误主要是由这个更新率引起的,因为它只发生在某些版本的代码上,即使是 1ms
-
看看这是否是 Weebly 特有的。尝试将您的 javascript 上传到 jsFiddle 或 Codepen 之类的地方,看看是否有同样的问题。
-
如何制作一个常规的 ol' 样式元素而不是
fontcolor?来自 MDN:String.prototype.fontcolor() 已弃用此功能不再推荐。尽管某些浏览器可能仍然支持它,但它可能已经从相关的 Web 标准中删除,可能正在被删除,或者可能仅出于兼容性目的而保留。避免使用它,并尽可能更新现有代码;请参阅本页底部的兼容性表以指导您的决定。请注意,此功能可能随时停止工作。
标签: javascript html loops