包含空字符串的 HTML 属性不显示 = 运算符
Html attribute containing empty string doesn't show = operator
一个用例在jQuery中:
$select.append('<option value="">All</option>');
看起来它实际上在 HTML 中添加了元素:
<option value>All</option>
相反,我想要的是附加到元素,以便它为值提供一个空字符串:
<option value="">All</option>
为什么没有发生?
它实际上在 HTML 中添加了元素
不,它没有。
它将元素添加到 DOM,而不是 HTML 中。
当您使用浏览器的开发人员工具查看 DOM 时,它将使用类似 HTML 的语法显示。在此语法中,值为空字符串的 value
属性将在不带=""
部分的情况下呈现。(看起来语法的那部分实际上是有效的 HTML,但我还没有在规范中找到允许它的部分。
如果你是(以Chrome为例),你可以右键单击它的父元素,然后选择"编辑为HTML",此时你将再次看到=""
。
如果您要提交包含 select 元素的表单,您将看到发送的数据将是:select_name=
。这表明该值已正确设置为空字符串。如果它不起作用,你会得到select_name=All
因为如果没有设置值,元素的文本将用作值。
您的问题似乎表明对所讨论语法的含义存在一定程度的混淆。基于标签中出现value
缺少=""
的事实,您推断这表示 HTML "值"元素 - 事实并非如此。这里实际发生的事情与以下事实有关:有多种方式可以表示 HTML 属性的值。让我们探索这些格式,以更好地了解您所看到的内容。
HTML 属性的有效格式
例如,表示value
属性的最常见方式是使用引号,如下所示:
value="something"
但是,如果您查看HTML5规范中有关属性的部分,则实际上以四种不同的方式表示属性值也是有效的:
空属性语法
不带引号的属性值语法
单引号属性值语法
双引号属性值语法
专门针对您的情况的格式是"空属性语法"。进一步阅读,该规范描述了空属性语法,如下所示:
只是属性名称。该值隐式为空字符串。
在属性的历史 HTML 5 参考中还有一个稍微更详细的解释:
某些属性可以通过仅提供属性来指定 名称,没有值。
在下面的示例中,禁用属性使用 空属性语法:
<input disabled>
请注意,空语法完全等效于指定空 字符串作为属性的值,如以下示例所示。
<input disabled="">
如您所见,这意味着对于 HTML 元素,当表示没有值的属性时,=""
是可选的。因此,某些浏览器将只显示属性,而不显示不必要的标记。无论属性是呈现为value
还是value=""
,任何符合标准的浏览器都会知道value
是一个包含字符串的属性,因此它将始终返回该属性的内容(如果有的话),或者在没有显式内容的情况下至少返回一个空字符串。
$select.append($('<option>', { value: "", text: "All" }));
- 从桌面读取python文件时高亮显示代码
- 使用JS如何动态更改显示的html文件中的文本背景颜色
- 这是什么 ==- javascript 运算符
- 如何在生成下载文件时显示加载动画
- React重新渲染但未显示正确的组件
- nodejs-expressjs上传图像并显示它们
- 使用JSP从服务器检索和显示图像
- 音频控件在mouseover上显示,在mouseout上淡出
- 让文本输入幻灯片显示输入时的新文本输入?然后向后滑动
- 使用电话间隙在Android应用程序中显示SQL Lite的数据
- 显示5秒后隐藏潜水
- 画廊图像未显示
- 不显示带有本地json文件数据的谷歌地图脚本
- 如何将json数据显示为html
- 谷歌地图不是以HTML显示,而是在JS Fiddle上工作
- Windows8应用程序(html&Javascript):从图片库(除了文件选择器)显示图像的另一种方式
- 使用AngularJs数据绑定的三元运算符显示图像
- 包含空字符串的 HTML 属性不显示 = 运算符
- 使用三元运算符有条件地在 AngularJS 模板中显示内容
- Javascript 关系运算符显示字符串的奇怪行为