在MDN的JavaScript指南中,我找到了一个例子
<form name="myForm">
<label>Form name:<input type="text" name="text1" value="Beluga"></label>
<input name="button1" type="button" value="Show Form Name"
onclick="this.form.text1.value = this.form.name">
</form>
当我们点击<input>
时,我们对它的父(this.form...
)有一个奇怪的反向引用。这对我来说似乎很奇怪,因为我总是以“有序”的方式使用对象引用。对象的属性(表单节点的输入)如何以这种方式引用它的对象(this.form
)?或者我是否混淆了面向对象编程与DOM模型?
答案 0 :(得分:2)
您可以这样做,因为事件处理程序中的this
引用了按钮的DOM元素(HTMLInputElement
),并且这些DOM元素具有属性form
,指的是他们所处的形式(如果他们在一起)。这就是DOM的定义方式。 (不要让这些链接欺骗你,这不是一个新的HTML5事情;这种方式已经很久了:Older HTMLInputElement
spec。)
在树结构(DOM和其他)中,叶节点对其父节点的引用并不罕见(因为在树中,它们只能有一个父节点)。这只是该概念的延伸。