如何使用dojo从innerText或InnerHTML获取字符计数?

时间:2019-05-09 04:45:53

标签: javascript html dojo innerhtml

我必须在应用程序中使用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 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

dojo.query()和document.getElementsByClassName()都返回类似数组的对象。这意味着您无法在节点数组上调用.innerHTML(您将得到未定义),随后您也无法调用.length。

查看以下两个参考: https://dojotoolkit.org/reference-guide/1.7/dojo/query.htmlhttps://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)

希望有帮助!