HTML - 为什么不确定=“indeterminate | true”不受尊重?

时间:2012-02-20 18:03:09

标签: javascript html dom

我想使用复选框的indeterminate属性。更改JavaScript中的值适用于各种浏览器(甚至是MSIE6!),但是,我无法通过任何中的HTML属性设置初始值。

这是设计的吗? 如果是这样,为什么?在服务器端,我可以确定它是不确定的。那么,为什么我不能告诉浏览器?如果一个长期运行的脚本阻止了属性设置,浏览器供应商是否担心FOUC(无格式内容闪烁)?

以下是一个有效的例子:http://jsfiddle.net/KUQC9/1/

2 个答案:

答案 0 :(得分:11)

您不能通过HTML设计使复选框不确定。请参阅css-tricks.com上的这篇文章,该文章深入讨论了该主题。

至于你的问题的“为什么”部分,W3C邮件列表中的一些信息可能会有所帮助:

  • 看起来好像给复选框一个三态值(看似检查,未检查,不确定)的想法被考虑,但由于向后兼容性问题而没有实现
  • 我在您的示例中显示的唯一提及真实indeterminate HTML“内容”属性的内容是:

对于它的价值,实际上有一个:indeterminate CSS选择器(它似乎被视为其他CSS伪类,如:visited,它也不能直接通过HTML设置,所以也许这是indeterminate也不可能的另一个原因。在CSS选择器的演示中,W3C本身使用了与您相同的方法:W3C indeterminate CSS selector demo。鉴于此,我会说你正在使用可用于设置复选框的不确定状态的最佳方法

答案 1 :(得分:4)

这是设计的。表示复选框状态的唯一HTML方法是通过checked属性;这是因为复选框是真/假,而不是真/假/未知。标记不确定的内容可以通过Javascript完成,但不会更改复选框的实际/ sumbitted值。

如果你真的想初始化复选框以确定不确定性,你需要使用Javascript(我想象在加载事件上)。