我已将其定义并放入<head>
标记:
<datalist id="colors">
<option>#ff0000</option> <!-- red -->
<option>#FF5100</option> <!-- red orange -->
<option>#FF7F00</option> <!-- orange -->
<option>#FFBE00</option> <!-- yellow orange -->
<option>#FFFF00</option> <!-- yellow -->
<option>#C0FF00</option> <!-- yellow green -->
<option>#00FF00</option> <!-- green -->
<option>#007F7F</option> <!-- Blue Green -->
<option>#0000FF</option> <!-- Blue -->
<option>#5C00FF</option> <!-- Blue Violet -->
<option>#7F00FF</option> <!-- Violet -->
<option>#BF007F</option> <!-- Red Violet -->
<option>#FFFFFF</option> <!-- White -->
<option>#DADADA</option> <!-- Gray1 -->
<option>#B6B6B6</option> <!-- Gray2 -->
<option>#929292</option> <!-- Gray3 -->
<option>#6D6D6D</option> <!-- Gray4 -->
<option>#494949</option> <!-- Gray5 -->
<option>#242424</option> <!-- Gray6 -->
<option>#000000</option> <!-- Black -->
</datalist>
它似乎有效,但我收到了错误:
Unexpected end tag (head) - ignored.
我应该把它放在哪里?
答案 0 :(得分:5)
首先回答标题中的问题:是的,您可以在多个控件中使用相同的datalist
元素,方法是在不同的id
元素中使用其input
属性值,例如< / p>
<datalist id="colors">...</datalist>
<label for="car">Color of your car:</label> <input type="color" id="car" list="colors">
<label for="tie">Color of your tie:</label> <input type="color" id="tie" list="colors">
关于“我应该把它放在哪里?”的问题,HTML5 LC说的是datalist
:
可以使用此元素的上下文: 在预期措辞内容的地方。
这几乎意味着文档body
中的任何位置,而不是head
中的位置。如果使用得当,它的位置无关紧要,因为它不会产生可见的内容。你可以把它,例如在引用它的第一个input
元素之前(或之后),或者如果您愿意,在body
的开头或结尾处。
但是,如果使用<option>#ff0000</option>
之类的标记,与<option value="#ffff00">
相反,在此上下文中,则放置很重要,因为现在有可见内容(字符串# FF0000)。在不支持datalist
元素的旧浏览器上,此类内容将显示在您放置元素的位置。
如果您使用的<input type="color">
似乎很可能,那么您应该考虑IE上不支持该元素类型的情况。问题是足够新版本的IE支持datalist
,但即使IE 11仍然实现<input type="color"> as a simple text box,
. This means that the user, on clicking element, would see a dropdown list of color codes like #FF0000. For this reason, unless IE is irrelevant, you should specify a visible name for the color in a
label`属性,例如
<option value="#ff0000" label="red">
<option value="#FF5100" label="red orange">
在这种方法中,datalist
元素仍然可以放在body
内的几乎任何位置,并且可以被多个input
元素引用。
答案 1 :(得分:1)
每个选项都不使用
<option>...</option>
但<option value="...">
答案 2 :(得分:1)
我在这些浏览器中运行了下面的骨架代码段:
所以你的错误可能来自另一个方面。
根据HTML5规范,该元素应该用于放置“Phrasing content”的地方。 http://www.w3.org/TR/html5/forms.html#the-datalist-element。正如我所见,这是文档的文字<body>
:http://www.w3.org/TR/html5/dom.html#phrasing-content-1
修改强> 有时候去找好'W3验证器:http://validator.w3.org/check
是有用的如果我将datalist
放在头部,验证器会报告“偏离头端标签”。所以这应该是问题的一个来源。
段:
<html>
<head>
<datalist id="colors">
<option>#ff0000</option> <!-- red -->
<option>#FF5100</option> <!-- red orange -->
<option>#FF7F00</option> <!-- orange -->
<option>#FFBE00</option> <!-- yellow orange -->
<option>#FFFF00</option> <!-- yellow -->
<option>#C0FF00</option> <!-- yellow green -->
<option>#00FF00</option> <!-- green -->
<option>#007F7F</option> <!-- Blue Green -->
<option>#0000FF</option> <!-- Blue -->
<option>#5C00FF</option> <!-- Blue Violet -->
<option>#7F00FF</option> <!-- Violet -->
<option>#BF007F</option> <!-- Red Violet -->
<option>#FFFFFF</option> <!-- White -->
<option>#DADADA</option> <!-- Gray1 -->
<option>#B6B6B6</option> <!-- Gray2 -->
<option>#929292</option> <!-- Gray3 -->
<option>#6D6D6D</option> <!-- Gray4 -->
<option>#494949</option> <!-- Gray5 -->
<option>#242424</option> <!-- Gray6 -->
<option>#000000</option> <!-- Black -->
</datalist>
</head>
<body>
<input list="colors" />
</body>
</html>