javascript语句中的CDATA标签的意义

本文探讨了在XML环境中正确嵌入JavaScript脚本的方法,对比了<script>标签与CDATA段的不同,强调了后者在避免解析错误中的关键作用。同时,介绍了XML中常见的转义字符及其用途。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在项目开发过程中,我们经常会使用到html和xml,同时我们也需要在页面中写一些javascript脚本,这个时候我们都会使用

<script>
    ...code...
</script>

或者

<script>
<![CDATA[
    ...code...
]]>
</script>

前者我就不需要多说了,现在就说说第二种使用在xml中的脚本。

当我们书写js脚本的时候,会判断当前的页面是那种类型,如果是xml,那我们在编写js的时候就必须使用上述的第二种情况了,

否则会遇到如下错误,例如:

xml中的脚本:

 <script>
                  
 function finStatementHdIdChange(e) {
        for(var i=0;i<viewModel.finStatementSource.length;i++){
            if(viewModel.finStatementSource[i].rptDate==this.value()){
                               viewModel.finData.set("roa",viewModel.finStatementSource[i].roa);
                              viewModel.finData.set("roe",viewModel.finStatementSource[i].roe);
                             viewModel.finData.set("salesGrowthRate",viewModel.finStatementSource[i].salesGrowthRate); 
                             viewModel.finData.set("repaymentRatio",viewModel.finStatementSource[i].repaymentRatio);
                            }
                        }
          }
</script>

然后再运行过程中后台会报:

很明显在解析i<viewModel.finStatementSource.length的时候报错了,因此我们这个时候就得使用:

<script>
<![CDATA[
    ...code...
]]>
</script>

方式去将js包装起来,CDATA 部分中的所有内容都会被解析器忽略,因此你在js中写的是什么,就是什么。

下面我们简单说一下转移字符:

转义字符

非法的 XML 字符必须被替换为实体引用(entity reference)。

假如您在 XML 文档中放置了一个类似 "<" 字符,那么这个文档会产生一个错误,这是因为解析器会把它解释为新元素的开始。因此你不能这样写:

<message>if salary < 1000 then</message>

为了避免此类错误,需要把字符 "<" 替换为实体引用,就像这样:

<message>if salary &lt; 1000 then</message>

在 XML 中有 5 个预定义的实体引用:

&lt;<小于
&gt;>大于
&amp;&和号
&apos;'省略号
&quot;"引号

注释:严格地讲,在 XML 中仅有字符 "<"和"&" 是非法的。省略号、引号和大于号是合法的,但是把它们替换为实体引用是个好的习惯。

关于XML CDATA的介绍可以阅读官方教程

http://www.w3school.com.cn/xml/xml_cdata.asp

### JavaScript 中 DOM 的简介及基本概念 DOM(Document Object Model),即文档对象模型,是一种用于表示和操作 HTML 或 XML 文档的标准编程接口。它将整个文档建模为一个由节点组成的树形结构,使得开发者可以通过 JavaScript 动态地访问、创建、删除或修改文档中的任何部分[^1]。 #### 1. DOM 的核心作用 DOM 是连接 Web 技术的重要桥梁,它的主要职责在于提供一种统一的方式让程序能够与页面内容互动。具体来说: - **HTML 构造 DOM 结构**:HTML 文件会被浏览器解析成一棵 DOM 树,其中每个标签对应于该树的一个节点。 - **CSS 设定样式**:通过选择器匹配特定的 DOM 元素来应用相应的视觉表现规则。 - **JavaScript 控制行为**:允许脚本读取当前状态下的 DOM 数据,并对其进行更新以反映新的逻辑需求[^2]。 这种三者协作的关系构成了现代 web 开发的基础架构之一。 #### 2. 基础术语解释 为了便于理解和使用 DOM API ,有必要先熟悉以下几个关键术语: - **Node (节点)** : 所有东西——元素(Element), 属性(Attribute),文本(Text)等等 —— 都可以看作是一个 Node 。它们共同组成了完整的 Document Tree(文档树). - **Element (元素)** : 特指那些具有 opening 和 closing tags 的 component ,比如 `<div>`(`<p>`) 等等. - **Attribute (属性)** : 关联到某个 Element 上面的一些 key-value pair information . For instance,"class='container'" inside an html tag represents one attribute named class whose value is container . - **Text Content (文本内容)** : 存储在 Text Nodes 当中的纯文字信息, 不含任何 markup language symbols like <> />< etc.. 此外还有 Comment nodes, CDATA section nodes among others but they're less frequently encountered during normal development processes.[^3] #### 3. 访问 DOM 节点的方法 以下是几种常见的获取指定 DOM 元素的技术手段: - 使用 `getElementById()` 方法依据唯一 id 查找单个元素; - 利用 `querySelector()` 函数执行 css selector 查询语句得到首个符合条件的结果 ; - 如果需要检索多个满足条件的目标,则可考虑采用 `getElementsByClassName()`, `getElementsByTagName()`,或者 `querySelectorAll()`等方式批量选取所需项目列表形式返回结果集实例化后的 HTMLCollections/NodeLists 对象供后续进一步迭代处理之需[^3]. --- ```javascript // Example of accessing different types of dom elements using various methods. const singleElement = document.getElementById('uniqueId'); console.log(singleElement); const firstMatchedItem = document.querySelector('.className'); console.log(firstMatchedItem ); const allItemsWithSameClassNames = document.getElementsByClassName('commonClass'); for(let i=0;i<allItemsWithSameClassNames.length;i++) { console.log(allItemsWithSameClassNames[i]); } ``` 以上代码演示了几种不同的查找技术实际应用场景下的简单示范案例说明。 --- ### 总结 总之,掌握了 DOM 的基础知识之后,就可以开始尝试编写更加复杂的交互式网站应用程序了。记住始终要遵循最佳实践原则,合理规划层次分明清晰易懂的代码风格有助于提高维护效率降低错误发生几率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值