获取值字符串表示的不同结果

时间:2013-12-13 12:59:49

标签: javascript html

我将继续尝试使用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]}。请解释一下为什么会发生这种情况?

更新:我将链接更改为实际。

1 个答案:

答案 0 :(得分:3)

问题在于:

 submit.key

您正在访问Node Object的属性 key ,在这种情况下,没有名称为 key 的属性。


如果您想访问 parentNode 属性,您必须这样做:

submit[key]

在这种情况下,变量的值将用作您要访问的节点对象中的属性的名称。 (parentNode)


无论如何,标准方法是:

document.getElementById("submit").parentNode;

或使用库轻松操作DOM元素(请参阅http://jquery.com/