You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何替换JavaScript中的document.write?代码改写求助

替换document.write的两种可行方案(附原脚本修复)

先提一下你原脚本里的几个语法问题,不修复的话替换后也跑不起来:

  • 最后一个条件判断写错了,else (hours < 24)是非法语法,应该改成else if (hours < 24)
  • 返回字符串有笔误:seconds + &#39; seconds39;;里的seconds39是打错了,应该是seconds,另外&#39;对应单引号,直接写'就行
  • minutes + &#39; mins &#39;;末尾多了空格,按需调整即可

下面是两种替换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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 21:39:36