Я продолжаю экспериментировать с парой значений имени объектов 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]}
. Пожалуйста, объясните мне, почему это произошло?
Обновлено: я изменил ссылку на фактическую.
Проблема здесь:
submit.key
вы получаете доступ к ключу свойств объекта Node, и в этом случае нет свойства с ключом имени.
Если вы хотите получить доступ к свойству parentNode, вам нужно сделать следующее:
submit[key]
в этом случае значение ключа переменной используется как имя свойства в объекте узла, к которому вы хотите получить доступ. (ParentNode)
Во всяком случае, стандартный способ:
document.getElementById("submit").parentNode;
или используйте библиотеку для простого управления элементами DOM (см. http://jquery.com/)
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;