如何从js更改html中脚本标签中的数据?

Posted

技术标签:

【中文标题】如何从js更改html中脚本标签中的数据?【英文标题】:How to change the data in script tags in html from js? 【发布时间】:2018-05-15 01:10:07 【问题描述】:

我的 html 中有以下脚本标签,

 <script type="application/ld+json">
        
          "@context": "http://schema.org",
          "@type": "VideoObject",
          "name": "Title",
          "description": "Video description",
          "thumbnailUrl": [
            "https://www.xpertdox.com/assets/images/XperDox_Cover_Art .png"
           ],
          "uploadDate": "2015-02-05T08:00:00+08:00",
          "duration": "PT1M51S",
          "embedUrl": "https://www.youtube.com/watch?v=LDIYgpraBHA",
          "interactionCount": "2347"
        
    </script>

我想通过我的 js 文件向它附加值,比如

"name": "My Title",
"description": "My description"

但我不知道如何为 js 的脚本标签赋值。我正在使用 angular js。任何人都可以建议我帮忙。谢谢..

【问题讨论】:

您的 JSON 对象是否未映射到某种变量?它本身不会向页面输出任何内容。 正如@ObsidianAge 所说,如果没有分配给变量,则无法访问该对象。喜欢let yourObj = all that content 然后你可以有yourObj.name = "My Title"yourObj["name"] = "My Title" 【参考方案1】:

我对你的意思有些困惑,但我创建了一个可能有用的东西的 sn-p。

通过使用 id 或查询选择器获取对它的引用,可以使用 javascript 从 json-script-tag 元素中获取内容。

一旦有了引用,就可以将 json-script-tag 的文本解析为 JavaScript 对象,并像处理普通对象一样对其进行操作。

最后,您可以将修改后的 JSON 写回脚本元素,尽管我不确定在什么情况下这将是处理数据传递的合适模式。

// get a reference to the script element
var jsonScript = document.querySelector('script[type="application/ld+json"]');
// parse the json-data element into a JS object
var json = JSON.parse(jsonScript.innerHTML)

// Set the object properties as required
json["name"] = "My Title"
json["description"] = "My description"

// write out the object back to the script tag (with pretty formatting)
// check in your browser developer tools to see the modified tag
jsonScript.innerHTML = JSON.stringify(json, null, 2)

console.log('Script modified - check your developer tools to see the changes')
<script type="application/ld+json">
        
          "@context": "http://schema.org",
          "@type": "VideoObject",
          "name": "Title",
          "description": "Video description",
          "thumbnailUrl": [
            "https://www.xpertdox.com/assets/images/XperDox_Cover_Art .png"
           ],
          "uploadDate": "2015-02-05T08:00:00+08:00",
          "duration": "PT1M51S",
          "embedUrl": "https://www.youtube.com/watch?v=LDIYgpraBHA",
          "interactionCount": "2347"
        
</script>

【讨论】:

以上是关于如何从js更改html中脚本标签中的数据?的主要内容,如果未能解决你的问题,请参考以下文章

使用 JS 正则表达式从 html 中删除所有脚本标签

如何监听验证一个项目中的所有 input输入框 自动过滤 html标签 css样式 和js脚本之类的

如何更改新添加的脚本标签内容的缩进

如何从脚本标签中提取字符串数据,其中脚本没有任何 id?

关于A标签href属性调用JS脚本问题!急急急。。。。。

如何使用 Nuxt Js 将数据属性添加到脚本标签?