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

How do get a character count from innerText or InnerHTML using dojo?

我必须在我的应用程序中使用 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

dojo.query() 和 document.getElementsByClassName() return 一个 array-like 对象。这意味着您不能在节点数组上调用 .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)

希望对您有所帮助!

document.getElementsByClassName("attribute-icon")dojo.query(".attribute-icon") returns 数组,您需要像这样遍历数组,

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

Demo