Правильное свойство для доступа, которое я ожидал, будет nextElementSibling
, но похоже, что VBA этого не реализует.
The NonDocumentTypeChildNode. nextElementSibling доступное только для чтения свойство возвращает элемент, следующий сразу за указанным в списке дочерних элементов его родительского элемента, или null, если указанный элемент является последним в списке.
Вы можете однако, более правильно, просто возьмите следующий индекс в post
, т.е. post.item(1)
. Вы собираете заголовки и значения в одном nodeList, поэтому вы можете использовать четное и нечетное различие для отделения заголовков от значений.
Вы можете увидеть это, если запустите в консоли следующее:
post = document.querySelectorAll(".list-specification li span");
var res = ''; for (let [i] of Object.entries(post)) {res += post.item(`${i}`).innerText + ' '};console.log(res);
Spans - это встроенные контейнеры , и вы можете видеть из html, что у вас есть пробел между диапазонами, который является частью родительского li
и , он становится дочерним текстовым узлом . Вот почему ваш nextSibling
попадает в текстовый узел и ошибки при попытке доступа .innerText
. Вам понадобится свойство текстового узла, например .nodeValue
(если вы находитесь на правом узле).
Вы можете пройти через console и просмотрите различные свойства в действии:
Поскольку nextElementSibling
не реализован в VBA, вам необходимо объединить nextSibling
в цепочку, так как за ответ @ Sim, если вы хотите исследовать nextSibling
, чтобы решить эту конкретную навигацию. Однако обратите внимание, что проверка nodeType
позволит избежать выдачи ошибки, поскольку затем вы можете применить соответствующий метод доступа.