全部学科
Python全栈
python
NodeJS全栈
nodejs
小程序首页
📅 2026-05-17 6 分钟 ✍️ juanwangdev

属性值写法与转义

HTML属性值的正确写法与转义是保证页面安全、避免解析错误的基础。

属性值引号规则

基本写法

HTML
<!-- 双引号(推荐) -->
<div class="container" id="main"></div>

<!-- 单引号 -->
<div class='container' id='main'></div>

<!-- 无引号(不推荐,仅限特定情况) -->
<div class=container id=main></div>

推荐统一使用双引号,保持代码风格一致。

引号嵌套处理

HTML
<!-- 外双内单 -->
<div title="这是'单引号'示例"></div>

<!-- 外单内双 -->
<div title='这是"双引号"示例'></div>

<!-- 混合使用 -->
<a href="javascript:alert('Hello')">点击</a>

特殊字符转义

常用转义字符

字符转义写法说明
"&quot;双引号
'&#39;单引号
<&lt;小于号
>&gt;大于号
&&amp;和号
空格&nbsp;不换行空格

属性值中转义

HTML
<!-- 属性值包含引号 -->
<div title="他说:&quot;你好&quot;"></div>
<div title='他说:&#39;你好&#39;'></div>

<!-- 属性值包含特殊符号 -->
<a href="search?q=a&amp;b">搜索</a>
<div title="x &lt; y 小于比较">说明</div>

URL编码

URL特殊字符

HTML
<!-- URL中的特殊字符需要编码 -->
<a href="search?q=你好&amp;page=1">搜索</a>

<!-- 空格编码 -->
<a href="search?q=hello%20world">搜索</a>

<!-- 中文编码 -->
<a href="search?q=%E4%BD%A0%E5%A5%BD">搜索</a>

JavaScript URL编码

JavaScript
// URL编码
const url = 'https://example.com/search?q=' + encodeURIComponent('你好 世界');
// 结果:https://example.com/search?q=%E4%BD%A0%E5%A5%BD%20%E4%B8%96%E7%95%8C

// URL解码
decodeURIComponent('%E4%BD%A0%E5%A5%BD'); // "你好"

安全注意事项

XSS防护

HTML
<!-- 危险:直接插入用户输入 -->
<div title="<%= userInput %>"></div>

<!-- 安全:转义特殊字符 -->
<div title="&lt;script&gt;alert(1)&lt;/script&gt;"></div>

事件属性安全

HTML
<!-- 危险写法 -->
<div onclick="alert('<%= userInput %>')">点击</div>

<!-- 安全做法:使用data属性 -->
<div data-content="<%= escapedValue %>" onclick="handleClick(this)"></div>

<script>
function handleClick(el) {
    // 在JS中处理,可进行安全检查
    const content = el.dataset.content;
    alert(content);
}
</script>

属性值写法规范

推荐写法

HTML
<!-- 多属性换行 -->
<input
    type="text"
    name="username"
    id="username"
    class="form-control"
    placeholder="请输入用户名"
    required
>

<!-- 布尔属性省略值 -->
<input type="checkbox" checked>
<button disabled>禁用按钮</button>

不推荐写法

HTML
<!-- 无引号写法(易出错) -->
<div class=my class id=main></div>

<!-- 混合引号风格 -->
<div class='box' id="main"></div>

<!-- 属性值含空格无引号 -->
<div class=box container></div>  <!-- 错误! -->

JSON作为属性值

写法示例

HTML
<div data-config='{"theme":"dark","size":"large"}'></div>
<div data-list='["apple","banana","orange"]'></div>

注意事项

HTML
<!-- 正确:外单内双 -->
<div data-config='{"key":"value"}'></div>

<!-- 正确:转义引号 -->
<div data-config="{&quot;key&quot;:&quot;value&quot;}"></div>

<!-- 错误:引号冲突 -->
<div data-config="{"key":"value"}"></div>

JavaScript处理

JavaScript
const el = document.querySelector('div');
const config = JSON.parse(el.dataset.config);
console.log(config.theme); // "dark"

要点总结

  1. 统一引号:推荐全部使用双引号
  2. 特殊转义:属性值中的"<>&需转义
  3. URL编码:URL参数使用encodeURIComponent编码
  4. XSS防护:用户输入必须转义后才能放入属性

📝 发现内容有误?点击此处直接编辑

← 上一篇 全局属性
下一篇 → 布尔属性
想查看更多题目和详细解析?
小程序提供完整的题库、模拟考试和详细解析
马上就来

长按或扫描二维码,立即体验

扫码体验小程序
马上就来
使用微信扫描二维码
立即体验完整题库