【问题标题】:Should setting `checkbox.checked = false` not clear the HTML attribute too?是否应该设置 `checkbox.checked = false` 也不会清除 HTML 属性?
【发布时间】:2009-12-04 21:42:44
【问题描述】:

这是我的 HTML:

<input id="test" type="checkbox" checked="">

这是 Firebug 的摘录:

>>> test
<input id="test" type="checkbox" checked="">

>>> test.checked = false
false

>>> test
<input id="test" type="checkbox" checked="">

嗯...我错过了什么,或者最后一行不应该是下面的内容吗?

<input id="test" type="checkbox">

在 UI 方面,当我执行 checked = false 行时,该复选框确实取消选中。

无论如何,如果对此有一些合理的解释,那么从 JavaScript 中取消选中复选框的正确方法是什么,如果不是 checked = false

【问题讨论】:

  • 您可能不应该关心 Firebug 说什么,只要数据到达您的服务器并且 UI 的行为符合预期。
  • 这只是为了演示我在说什么。真正的问题是我有 CSS,我想根据复选框是否被选中来产生效果,它只有在我单击复选框时才起作用,而不是在我设置 .checked 时。

标签: javascript dom firefox3.5


【解决方案1】:

input type="text"value属性和input type="checkbox"radiooptioncheckedselected属性对应表单域的初始值,不是 用户或脚本设置的当前值。因此更改checked 属性不会改变属性值,设置checked 属性不会改变将要与表单一起提交的真实可见值。

checked="checked" 属性对应于defaultChecked DOM property,而不是checked 属性。同样,value="..." 属性对应于defaultValue

(注意这里有 IE 陷阱,因为 IE 不知道属性和属性之间的区别。)

【讨论】:

  • 我从未提到过value 属性。我的测试复选框甚至没有。所以我不确定你的第一段是如何应用的,但 defaultChecked 属性是关键。谢谢!
  • 它的背景:checked/defaultChecked 是复选框的 value/defaultValue 的特例(类似地 selected/defaultSelected 用于选项)。
  • Kev,您的问题是关于 Firebug 报告的内容。 bobince的整个原始答案都是相关的。此外,附加信息也不错。
  • 请阅读我的问题并告诉我我在哪里提到了value 属性。至于 Firebug,请参阅我对问题的评论。
【解决方案2】:

您可能希望 Firebug 显示值信息,类似于在 HTML 检查窗格中更新style 的方式。但是,inputselectoptiontextarea 的行为方式不同,并且此窗格中的值不会更新,并且始终显示原始值(页面呈现时的值)。如果 UI 正在更新,那么您就知道自己做得对。

【讨论】:

  • 这不是真的。使用没有值属性的 HTML 元素 a 自己尝试一下——再次运行 aa.value=7a 行。
  • 抱歉,我所说的仍然有效,但我应该澄清a 是一个指向 HTML input 元素的 JavaScript 变量。它可能看起来好像我的意思是一个锚标签。
  • 确实遇到过这种情况,但我删除了该评论,因为它不再需要。但是,我不明白您在第一条评论中试图描述的场景,尤其是“和 a 再次”
  • 我确实对这个评论删除感到困惑......这让我很难理解剩下的那些。无论如何,你第二次在 firebug 命令行上执行a 就是看看aa.value=7 所做的不同...
【解决方案3】:

checked = '',我相信是正确的。我怀疑当您执行 checked = false 并执行等效操作 checked = '' 时,浏览器会变得友好。

【讨论】:

  • 试过了。似乎没有改变结果。同样根据developer.mozilla.org/en/XUL/checkbox,checked 属性是布尔类型。
  • 也许我很困惑。有什么事情没有按您的预期工作吗?
  • 对不起,我试图在问题中表达这一点。我希望设置.checked 属性会对HTML 属性产生影响(特别是因为它对UI 有影响。)但是HTML 属性不会改变,无论它最初设置什么。这似乎很不一致。
  • @Kev:确保您查看的是正确的文档。您在那里链接到 XUL 文档。
  • @nickf:哎呀,你完全正确!不过,在正确的文档 (developer.mozilla.org/en/DOM/Input) 中是一样的。
猜你喜欢
  • 2014-06-20
  • 2012-05-07
  • 2012-04-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-06
相关资源
最近更新 更多