将<span />标签放在<option />标签内是不好的,只能用于string操作而不是样式?

我想制作一个<option />标签的文本内容组。 说我有以下几点: <option>8:00 (1 hour)</option> ,时间模式8:00可以修改,然后括号内的文本(1 hour)也可以修改。

我正在考虑做一些像<option><span>8:00</span><span> (1 hour)</span></option>

<span />标签放在<option />标签内是不好的,只能用于string操作而不是样式?

从HTML 4.01规范:

 <!ELEMENT OPTION - O (#PCDATA) -- selectable choice --> 

从HTML 5草案规范:

内容模型:文本。

(即使是HTML 3.2和HTML 2规范也会这样说: <!ELEMENT OPTION - O (#PCDATA)*>

一个选项元素不能有任何子元素。 所以是的,这是不好的。

你可以使用一个Javascript插件来克服这个限制。 例如jQuery插件“Select2” Select2插件主页 。 我在几个项目中使用它,认为它非常灵活和方便。

有一些它们,但它们完成了相同的事情 – 将传统的<select>转换为具有额外function的<div>块。

option元素

内容模型:文本

不,不好。 考虑将值保留在脚本中,以便在必要时重新组合它们。

如果你想这样做,你最好使用HTMLreplace你的<select>

正如其他人所build立的,我已经尝试使用<b>和其他标签, <option>不会在其中使用标签。

你可以做什么,因为你不能在<option>标签内使用<span>
您可以使用索引编号通过提取文本
document.getElementById(selectid).options [x] .text其中x是相关索引,作为variables。

那么你所做的就是使用“(”把variables分成时间,并删除最后一个字符以及删除“)”

样品:

  <script type="text/javascript"> function extractSelectText() { var text = document.getElementById("main").options[1].text /* var tlength = text.length var splitno = tlength - 1 var text2 = text.slice(0, splitno) var textArray = text2.split(" )") var time = textArray[0] var hours = textArray[1] } </script> 

改变它很简单:

  <script type="text/javascript"> function changeSelectText() { /* add your code here to determine the value for the time (use variable time) */ /* add your code here to determine the value for the hour (use variable hours) */ var textvalue = time + " (" + hours + ")" document.getElementById("main").options[1].text } </script> 

如果使用for函数,则可以用2,3等更改selectreplace1的每个值,并设置一个间隔函数以不断更新它。

一个编辑选项是使用一些奇特的模式匹配来更新内容。 这将是更慢和更多的资源密集型,并取决于格式是如何规则,但不需要任何HTML修改。 但是,我担心的是无障碍和用户体验。 屏幕阅读器软件的价值变化是很难拿起,也可能会混淆其他用户。