Как получить количество символов из innerText или InnerHTML, используя dojo? - PullRequest
0 голосов
/ 09 мая 2019

Я должен использовать Dojo в своем приложении, и я пытаюсь получить общее число в элементе HTML, и я продолжаю получать ошибку.

Вот мой код:

var attributeIcons = dojo.query(".attribute-icon");
if (attributeIcons.innerText.length = 4) {
  console.log(attributeIcons);
}

И я тоже пытаюсь использовать этот подход:

var attributeIcons = document.getElementsByClassName("attribute-icon").innerHTML.length;
console.log(attributeIcons);

Каждый подход дает мне одну и ту же ошибку:

Uncaught TypeError: Cannot read property 'length' of undefined

Ответы [ 2 ]

1 голос
/ 09 мая 2019

document.getElementsByClassName("attribute-icon") или dojo.query(".attribute-icon") возвращает массив, и вам необходимо выполнить итерацию по массиву следующим образом:

var attributeIcons = document.getElementsByClassName("attribute-icon");
Array.prototype.forEach.call(attributeIcons, function(el) {
    console.log(el.innerHTML.length);
});

Demo

0 голосов
/ 09 мая 2019

И dojo.query (), и document.getElementsByClassName () возвращают объект, похожий на массив. Это означает, что вы не можете вызвать .innerHTML для массива узлов (вы получаете неопределенное значение), и впоследствии вы не можете вызвать .length.

Проверьте эти две ссылки: https://dojotoolkit.org/reference-guide/1.7/dojo/query.html, https://developer.mozilla.org/en-US/docs/Web/API/Document/getElementsByClassName

Попробуйте выполнить следующее, чтобы увидеть ваш массив.

var attributeIcons = dojo.query(".attribute-icon");
console.log(attributeIcons)

// or 

var attributeIcons = document.getElementsByClassName("attribute-icon");
console.log(attributeIcons)

Вы можете выбрать один из элементов массива и затем запустить .innerHTML.length для него, но не для всего массива.

var attributeIcons = dojo.query(".attribute-icon");
console.log(attributeIcons[0].innerHTML.length)

// or 

var attributeIcons = document.getElementsByClassName("attribute-icon");
console.log(attributeIcons[0].innerHTML.length)

Надеюсь, это поможет!

...