我必须在应用程序中使用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
答案 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);
});
答案 1 :(得分:0)
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)
希望有帮助!