Javascript 为什么这个表达式在Firefox/Chrome中返回true,在IE中返回false?

Javascript 为什么这个表达式在Firefox/Chrome中返回true,在IE中返回false?,javascript,jquery,internet-explorer,cross-browser,Javascript,Jquery,Internet Explorer,Cross Browser,我的表格中有类似于以下内容的代码: <input type="hidden" id="submitMyForm" name="submitMyForm" checked="checked" /> 这里有一个例子来说明 为什么IE对这个表达有不同的解释?还有,更实用的一点是,我可以使用哪种等价的表达式在所有浏览器中都是正确的?您的HTML是无效的(在HTML5中,早期版本的HTML不能在DTD中表达规则,但仍然不确定)。只有单选按钮和复选框可以具有选中的属性。隐藏的输入可能不会。您遇

我的表格中有类似于以下内容的代码:

<input type="hidden" id="submitMyForm" name="submitMyForm" checked="checked" />
这里有一个例子来说明

为什么IE对这个表达有不同的解释?还有,更实用的一点是,我可以使用哪种等价的表达式在所有浏览器中都是正确的?

您的HTML是无效的(在HTML5中,早期版本的HTML不能在DTD中表达规则,但仍然不确定)。只有单选按钮和复选框可以具有选中的
属性。隐藏的输入可能不会。您遇到的差异是由于浏览器试图以不同的方式从HTML中的错误中恢复

明智的方法是根本不使用带有选中属性的隐藏输入

可能您可以使用
数据检查
属性代替。然后使用
.data('checked')
访问它

您还可以继续使用断开的HTML并检查属性本身(而不是从中生成的属性):

您的HTML是无效的(无论如何,在HTML5中,早期版本的HTML不能在DTD中表达规则,但在DTD中仍然不确定)。只有单选按钮和复选框可以具有选中的
属性。隐藏的输入可能不会。您遇到的差异是由于浏览器试图以不同的方式从HTML中的错误中恢复

明智的方法是根本不使用带有选中属性的隐藏输入

可能您可以使用
数据检查
属性代替。然后使用
.data('checked')
访问它

您还可以继续使用断开的HTML并检查属性本身(而不是从中生成的属性):


FYI
选中
不是隐藏输入的有效属性。我认为这是不一致的根源。仅供参考,选中的
属性对于隐藏输入无效。我想这是不一致的根源。谢谢。这是一个旧页面-我认为它是这样设置的,因为同一个表单有两个表单-它可以是更新或创建表单。当使用它作为创建表单时,这个checkbox元素实际上是存在的——当使用它作为更新表单时,它并不存在,所以他们试图用这个隐藏字段来模拟它。我会找到一种更正确的编码方法。隐藏的等价于选中/未选中复选框的是存在或不存在的复选框,而不是有无选中状态的复选框。我认为他们试图对表单的任何变体使用相同的处理代码。因此,他们希望能够检查
$(“#submitMyForm”).prop(“checked”)
,而不管使用的是哪个版本的表单。实际代码比示例要复杂一些(我没有很好地为示例命名元素),但这是基本思想。谢谢你帮我找出了问题所在,我将重新编写代码,使之成为正确的html,并更符合逻辑地完成所需的任务。这是一个旧页面-我认为它是这样设置的,因为同一个表单有两个表单-它可以是更新或创建表单。当使用它作为创建表单时,这个checkbox元素实际上是存在的——当使用它作为更新表单时,它并不存在,所以他们试图用这个隐藏字段来模拟它。我会找到一种更正确的编码方法。隐藏的等价于选中/未选中复选框的是存在或不存在的复选框,而不是有无选中状态的复选框。我认为他们试图对表单的任何变体使用相同的处理代码。因此,他们希望能够检查
$(“#submitMyForm”).prop(“checked”)
,而不管使用的是哪个版本的表单。实际代码比示例要复杂一些(我没有很好地为示例命名元素),但这是基本思想。谢谢你帮我找出问题所在,我将重新编写代码,使其成为正确的html,并在逻辑上更符合需要
$('#submitMyForm').prop("checked")
alert($('#submitMyForm').attr("checked"));