我将继续尝试使用JS
个对象的名称值对。的 JSFIDDLE
<div id="parent" class="parent">
<div id="child" class="child">
<input type="text" class="text"/>
<input id="submit" type="submit" onclick="doThis()"/>
</div>
<div>
和JS
代码
function doThis(){
var span= document.createElement("span");
var parent=document.getElementById("parent");
var child=document.getElementById("child");
var submit=document.getElementById("submit");
child.insertBefore(span,submit);
myKeys=[];
for(var key in submit){
if(key=="parentNode"){
myKeys.push("{"+key);
myKeys.push(" "+submit.key+"}");
}
}
myKeys.push("{"+"parentNode");
myKeys.push(" "+submit.parentNode+"}");
span.innerHTML=myKeys;
}
刚刚创建的span
包含以下内容:
{parentNode, undefined},{parentNode, [object HTMLDivElement]}
但我希望此span
将被包含{parentNode, [object HTMLDivElement]},{parentNode, [object HTMLDivElement]}
。请解释一下为什么会发生这种情况?
更新:我将链接更改为实际。
答案 0 :(得分:3)
问题在于:
submit.key
您正在访问Node Object的属性 key ,在这种情况下,没有名称为 key 的属性。
如果您想访问 parentNode 属性,您必须这样做:
submit[key]
在这种情况下,变量键的值将用作您要访问的节点对象中的属性的名称。 (parentNode)
无论如何,标准方法是:
document.getElementById("submit").parentNode;
或使用库轻松操作DOM元素(请参阅http://jquery.com/)