将<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修改。 但是,我担心的是无障碍和用户体验。 屏幕阅读器软件的价值变化是很难拿起,也可能会混淆其他用户。