Javascript 在document.forms[x].elements中从DOM中省略图像输入是否正常?
我发现在HTML页面中给定如下表单:Javascript 在document.forms[x].elements中从DOM中省略图像输入是否正常?,javascript,html,dom,forms,input,Javascript,Html,Dom,Forms,Input,我发现在HTML页面中给定如下表单: <form name="form"> <input type="image" name="foo" src="somewhere.gif" alt="image" value="blah"/> <input type="text" name="bar" value="blah"/> </form> 在Javascript中通过DOM访问元素时,没有用于图像输入的元素!只是
<form name="form">
<input type="image" name="foo"
src="somewhere.gif" alt="image" value="blah"/>
<input type="text" name="bar" value="blah"/>
</form>
在Javascript中通过DOM访问元素时,没有用于图像输入的元素!只是省略了。因此,document.forms[0]。elements.length
为1,document.forms[0]。element[0]。type
为“text”
在Firefox和IE中似乎就是这样。我在参考书或网络上都找不到这一事实。我只能在这里找到一条一次性评论:
这意味着“就是这样”。如果是这样的话,那就这样吧——但它真的没有被记录在任何地方吗?这是一个历史错误,还是有原因?这似乎是所有浏览器中
元素属性的行为
但是,您仍然可以使用childNodes
属性通过JavaScript中的DOM访问它
例如:
document.forms[0].childNodes.length; // equals 5 (2 inputs and 3 text nodes).
document.forms[0].childNodes[1]; // This is your input with type='image'
有趣的。。。规范将.elements
定义为:
元素
返回表单中所有控件元素的集合
规范第17.2.1部分没有列出“图像”类型,所以我想这就是答案。事实上,我看到一条评论:“DOM应该是这样工作的,这就是它在Mozilla、NS4x和IE中的工作方式。即使我们想改变,也无法改变,很多网站都会崩溃。”因此我倾向于历史错误。图像元素已在HTML 2 DTD中
也许这就是作者不鼓励使用Dom层次结构而支持getElement[s]ByXxx函数(或XPath!)的原因和其他可能的罪魁祸首。我自己也被它咬了一口。是的。没错,但是它没有列出文本区域
,或者选择
“输入”,它们确实出现在元素
属性中。你链接到的HTML规范确实列出了图像类型(在提交和重置之间),除非我不明白你说了什么。