Другой результат получения значения строки представления

0

Я продолжаю экспериментировать с парой значений имени объектов 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
    Что именно ваш вопрос? Что ты пытаешься сделать? Вставлен ли промежуток в неправильном месте?
  • 0
    @Samy Я пытаюсь понять, почему фрагмент кода for(var key in submit){ if(key=="parentNode"){ myKeys.push("{"+key); myKeys.push(" "+submit.key+"}");}} добавлено в myKeys {parentNode, undefined} а не {parentNode, [object HTMLDivElement]} как это было добавлено myKeys.push("{"+"parentNode"); myKeys.push(" "+submit.parentNode+"}"); span.innerHTML=myKeys;
Теги:

1 ответ

3
Лучший ответ

Проблема здесь:

 submit.key

вы получаете доступ к ключу свойств объекта Node, и в этом случае нет свойства с ключом имени.


Если вы хотите получить доступ к свойству parentNode, вам нужно сделать следующее:

submit[key]

в этом случае значение ключа переменной используется как имя свойства в объекте узла, к которому вы хотите получить доступ. (ParentNode)


Во всяком случае, стандартный способ:

document.getElementById("submit").parentNode;

или используйте библиотеку для простого управления элементами DOM (см. http://jquery.com/)

  • 0
    Потрясающие! Это то что мне нужно! :)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню