Что-то я запутался со свойством children и методом children() в DOM
Народ, пару лет назад написал скрипт, в котором использовалась такая конструкция:
var recordCount=currentElement.children("recordtable").children("record").length; она работала во всех браузерах, от Firefox и Konqueror до IE8. Я уже забыл что такое яваскрипт. А сейчас смотрю - скрипт не работает. Стал дебажиться, а проблема вот в этой строчке. Сколько бы не было элементов record, всегда получаем 1. Полез на W3C, смотрю: в DOM-модели есть только children как свойство, а children() как метода нет: http://www.w3schools.com/jsref/dom_obj_all.asp Я то ли отстал от жизни, то ли уже новые движки по-другому работают. Я уже и не помню, почему использовал имя элемента в качестве параметра children(), и оно работало. Факт в том, что теперь не работает. Вопроc: как по-быстрому исправить? |
Вложений: 1
Цитата:
Проблема оказалась в другом. Сразу после парсинга XML через parseFromString(), элементы одного уровня становятся вложенными. И поэтому у каждого элемента только один дочерний элемент. Это не поддается никакой логике. Например, XML-код такой: Код:
<root> ![]() У меня все это дело висит в онлайне, можно убедиться: 1. Открываешь URL http://webhamster.ru/webmytetra 2. В появившемся окне вставляешь: https://raw.githubusercontent.com/xi...er/mytetra.xml. Можешь открыть этот URL в браузере чтобы видеть с какими данными идет работа. 3. Открываешь дебагер, ставишь брекпоинт в файле tree.js на строку 197 (это сабжевая проблемная строка) 4. Пару раз после остановки нажимаешь продолжение, пока переменная nodeName не станет «Железо». Именно тогда будет два элемента record, а конструкция вернет в recordCount единицу. |
Цитата:
https://www.w3.org/TR/xml/#dt-empty EmptyElemTag ::= '<' Name (S Attribute)* S? '/>' В регулярке написано "S?", где S::=(#x20 | #x9 | #xD | #xA)+ - пробельный символ, а ? - это 0 или 1 раз. |
Часовой пояс GMT +3, время: 02:19. |