如何替换JavaScript中的document.write?代码改写求助
替换document.write的两种可行方案(附原脚本修复)
先提一下你原脚本里的几个语法问题,不修复的话替换后也跑不起来:
- 最后一个条件判断写错了,
else (hours < 24)是非法语法,应该改成else if (hours < 24) - 返回字符串有笔误:
seconds + ' seconds39;;里的seconds39是打错了,应该是seconds,另外'对应单引号,直接写'就行 minutes + ' mins ';末尾多了空格,按需调整即可
下面是两种替换document.write的具体实现:
方案1:用document.body.innerHTML
直接把生成的时间文本追加到body的HTML内容里,代码如下:
<script> function convertTimestamp(timestamp) { var currentTime = new Date(); var convertedTimestamp = new Date(timestamp); var offset = -new Date().getTimezoneOffset(); convertedTimestamp = new Date(convertedTimestamp.getTime() + offset * 60 * 1000); var timeDifference = currentTime - convertedTimestamp; var seconds = Math.floor(timeDifference / 1000); var minutes = Math.floor(seconds / 60); var hours = Math.floor(minutes / 60); if (seconds < 60) { return seconds + ' seconds'; } else if (minutes < 60) { return minutes + ' mins'; } else if (hours < 24) { return hours + ' hours'; } } // 替换原document.write的代码 document.body.innerHTML += convertTimestamp("<data:post.timestamp/>"); </script>
⚠️ 注意:如果页面已经加载完成后执行这段代码,innerHTML +=会重新解析整个body的HTML,可能会导致已有元素的事件绑定丢失,更适合在页面加载初期执行。
方案2:用document.body.append()(更推荐)
创建一个纯文本节点,再追加到body末尾,这种方式不会破坏已有页面结构和事件绑定,安全性更高:
<script> function convertTimestamp(timestamp) { var currentTime = new Date(); var convertedTimestamp = new Date(timestamp); var offset = -new Date().getTimezoneOffset(); convertedTimestamp = new Date(convertedTimestamp.getTime() + offset * 60 * 1000); var timeDifference = currentTime - convertedTimestamp; var seconds = Math.floor(timeDifference / 1000); var minutes = Math.floor(seconds / 60); var hours = Math.floor(minutes / 60); if (seconds < 60) { return seconds + ' seconds'; } else if (minutes < 60) { return minutes + ' mins'; } else if (hours < 24) { return hours + ' hours'; } } // 替换原document.write的代码 var timeTextNode = document.createTextNode(convertTimestamp("<data:post.timestamp/>")); document.body.append(timeTextNode); </script>
如果你不想把文本放到body末尾,而是特定容器里,只需要把document.body换成目标元素的选择器,比如document.getElementById('your-time-container-id'),就能精准控制插入位置。
内容的提问来源于stack exchange,提问作者Sulty
相关产品推荐
相关产品推荐

