Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   При переборе значений Dom не работает push() (https://javascript.ru/forum/events/85152-pri-perebore-znachenijj-dom-ne-rabotaet-push.html)

lnnansy 22.04.2023 15:55

При переборе значений Dom не работает push()
 
есть код

const xmlString = `
<list>
<student>
<name lang="en">
<first>Ivan</first>
<second>Ivanov</second>
</name>
<age>35</age>
<prof>teacher</prof>
</student>
<student>
<name lang="ru">
<first>Петр</first>
<second>Петров</second>
</name>
<age>58</age>
<prof>driver</prof>
</student>
</list>
`;
const parse = new DOMParser();
const xmlDOM = parse.parseFromString(xmlString,"text/xml");
//console.log(xmlString);
const listNode = xmlDOM.querySelectorAll("student");
let Arr = [], list = {};
let i=0;

var div_array = [...listNode];
listNode.forEach(student =>{



const age1 = student.querySelector("age").textContent;
const prof1 = student.querySelector("prof").textContent;
const name1 = student.querySelector("first").textContent + " " + student.querySelector("second").textContent;
console.log(age1, prof1, name1);
const langAttr1 = student.querySelector("name").getAttribute("lang") ;
list.name = name1;
list.prof = prof1;
list.age = age1;
list.lang = langAttr1;
console.log(list);
console.log("----------");
Arr.push(list);
console.log(Arr);


});


функция Arr.push(list); должна добавлять в пустой массив 2 значения : но добавляет одно и то же 2 раза вместо 2-х разных. Подскажите пожалуйста что не так.

рони 22.04.2023 15:59

lnnansy,
Пожалуйста, отформатируйте свой код!

Для этого его можно заключить в специальные теги: js/css/html и т.п., например:
[html run]
... минимальный код страницы с вашей проблемой
[/html]

О том, как вставить в сообщение исполняемый javascript и html-код, а также о дополнительных возможностях форматирования - читайте http://javascript.ru/formatting.

рони 22.04.2023 16:04

Цитата:

Сообщение от lnnansy
2 раза вместо 2-х разных. Подскажите пожалуйста что не так.

создавать надо объект каждый раз, а не ссылаться на один и тот же.
Цитата:

При копировании переменной объекта копируется ссылка, но сам объект не дублируется.
читать тут https://learn.javascript.ru/object-copy


Часовой пояс GMT +3, время: 20:34.