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

如何通过JavaScript修改script标签数据并使其生效?

问题分析与解决

你遇到的核心问题是:修改id="datas"的script标签innerHTML后,浏览器不会自动重新执行这段脚本,内存中的data对象还是最初定义的版本,所以点击Check按钮依然弹出旧值。

原因解释

页面加载时,浏览器会执行一次script标签内的代码,把data对象挂载到全局作用域。之后你修改了标签的文本内容,但这个操作仅改变了DOM节点的文本,并不会触发脚本重新执行,因此全局的data对象没有被更新。

解决方案

方案1:直接修改全局data对象(推荐)

这是最简单且安全的方式,无需操作script标签,直接更新内存中的对象属性:

document.getElementById("change").addEventListener("click", function () {
    // 直接修改data对象的属性
    data.key = "BCSD123";
    data.balance = "200";
    
    alert(data.key); // 此时会弹出新值BCSD123
});

方案2:重新执行修改后的脚本(不推荐,仅作参考)

如果一定要通过修改script标签内容实现,需要删除旧的script标签,重新创建新的script元素插入页面,触发脚本执行:

document.getElementById("change").addEventListener("click", function () {
    const oldScript = document.getElementById("datas");
    const newScript = document.createElement("script");
    newScript.id = "datas";
    newScript.textContent = `data = {
        key: "BCSD123",
        balance: "200",
    };`;
    
    // 替换旧的script标签
    oldScript.parentNode.replaceChild(newScript, oldScript);
    
    alert(data.key); // 弹出新值BCSD123
});

注意:这种方式会重新定义全局data对象,可能带来意外副作用,除非有特殊需求,否则优先选择方案1。

内容的提问来源于stack exchange,提问作者Sukrat Chakravarti

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 00:38:21