【问题标题】:HTML - Why isn't indeterminate="indeterminate|true" respected?HTML - 为什么不尊重 indeterminate="indeterminate|true"?
【发布时间】:2012-02-20 18:03:09
【问题描述】:

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

这是设计使然吗? 如果是,为什么?在服务器端,我可以确定它是不确定的。那么,为什么我不能告诉浏览器呢?如果长时间运行的脚本支持属性设置,浏览器供应商难道不担心 FOUC(无样式内容的闪烁)吗?

这是一个工作示例:http://jsfiddle.net/KUQC9/1/

【问题讨论】:

  • indeterminate 属性是什么?
  • @Rocket,看看工作示例。
  • 我现在才刚刚了解这一点。我有一个问题要问你,实际上......你说你可以确定它在服务器上是不确定的:你是怎么做到的? (顺便说一句,您可以通过使用 DOM-load 事件而不是超时 - jsfiddle.net/Cd35L - 甚至更早 - jsfiddle.net/dV3uL 来很大程度上避免 FOUC)
  • 我在服务器上存储了一个树结构。我基本上恢复了上次提交包含嵌套复选框的表单时的状态。也就是说,在构建表单时,如果之前未选中某个节点,我会递归树以查找任何已选中的子节点。如果检查了任何子级,则父级是不确定的。关于 FOUC,我的树有点大——再大一点,我就会担心 FOUC 的可能性。

标签: javascript html dom


【解决方案1】:

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

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

  • 似乎考虑了为复选框提供三态值(看似选中、未选中、不确定)的想法,但由于向后兼容性问题而未实施
  • 唯一提到真正的indeterminate HTML“内容”属性,如您在示例中所示,我可以在这里找到:

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

【讨论】:

  • 这篇文章及其 cmets 真正讨论了原因。
  • @Olson.dev:我从 W3C 邮件列表中添加了一些信息 - 请参阅我的编辑。希望它对您有所帮助-祝您好运!
  • 谢谢。我发现这些链接对“为什么”很有帮助,并已将您的答案标记为已接受。还有+1。
【解决方案2】:

这是设计使然。表示复选框状态的唯一 HTML 方法是通过选中属性;这是因为复选框意味着真/假,而不是真/假/未知。可以通过 Javascript 标记不确定的内容,但它不会更改复选框的实际/汇总值。

如果您真的想将复选框初始化为不确定,则需要使用 Javascript 来完成(我想在加载事件上)。

【讨论】:

  • 感谢您的回答。但是,您并没有告诉我比我在问题中指定的更多信息。谁的设计?为什么会这样?我知道它的意思是真/假但不是未知的,这就是为什么我提出 2 个单独的属性(只是属性是如何分开的)。此外,我的工作示例已经展示了通过 JavaScript 初始化它们。
  • 它是 w3c (w3.org) 的设计,它是正式识别/编码/设计 HTML 的主体。 HTML(和 XHTML 以及 XML)是文档语言,而不是编程语言。如果复选框文档中的目的是指定一个必须为真或假的选项,那么具有将真/假值描述为未知服务的属性的目的是什么。
  • a 的儿子。 . .根据 w3c 的 2012 年 2 月 16 日的 HTML5 草案,它不确定是输入元素的属性。 dev.w3.org/html5/spec/… 最初无法设置(为真)。
  • @post_erasmus:这就是 OP 已经引用的 IDL 属性——他们刚刚开始正式将其添加到规范中。仍然没有我知道的 content (HTML) 属性 indeterminate
  • @JackieChiles:绝对正确。甚至一旦添加到规范中,谁知道它会在主要浏览器中实现多长时间?我想在几秒钟前指出它不是规范的一部分/不属于 HTML。
猜你喜欢
  • 1970-01-01
  • 2013-08-18
  • 1970-01-01
  • 2021-09-19
  • 1970-01-01
  • 2018-12-08
  • 1970-01-01
  • 2011-11-20
  • 1970-01-01
相关资源
最近更新 更多