DOM дочерний тэг
Я пытаюсь использовать JavaScript для обхода дочерних узлов взрослого и изменения свойств по мере необходимости. Код зависает в elemtree.tagName, сообщая, что у объекта нет этого свойства. Я прочитал о свойствах DOM, а tagName было объявлено как свойство DOM. Почему бы это не было признано?
код ниже:
elemtree = elem.firstChild;
while (elemtree != null) {
if (elemtree.tagName.toLowerCase() == "img") {
elemtree.src = img;
}
else {
elemtree.display = display;
}
elemtree = elemtree.nextSibling;
}
2 ответа
elemtree.nextSibling
включает в себя узлы text и comment, которые имеют nodeName
но нет tagName
имущество.
Решения:
- использование
elem.firstElementChild
а такжеelemtree.nextElementSibling
вместо этого (возможные проблемы совместимости браузера). - использование
nodeName
вместоtagName
, Проверить на наличие
tagName
перед его использованием:if (elemtree.tagName && elemtree.tagName.toLowerCase() == "img") {
Я согласен с Робом В., что лучшее решение - это избегать узлов без свойства для начала, однако вы также можете рассмотреть возможность изменения:
if (elemtree.tagName.toLowerCase() == "img")
в
if (elemtree.tagName && elemtree.tagName.toLowerCase() == "img")
Таким образом, если свойство не существует, оно не выдаст ошибку.