开发者问题收集

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

2019-05-09
482

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

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

ravibagul91
2019-05-09

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)

希望有帮助!

Nison M
2019-05-09