如何在元素的 innerHTML 中呈现 [object HTMLCollection].length?
How to render [object HTMLCollection].length in an element's innerHTML?
我希望证明 HTMLCollection 是一个实时列表,而 NodeList 是静态的。
为此,我将 div 的总数(即 1)存储在页面上的每个变量中(g 表示 HTML,q 表示节点)。我分别使用 GetElementBy... 和 querySelector.... 执行此操作。
console.log(q.length)
// 1
console.log(g.length)
// 1
然后我使用 JS 创建一个新的 div 并将其附加到页面。
现在总共 divs 2.
console.log(q.length)
// 1
console.log(g.length)
// 2
它在控制台中一切正常,但是,我无法正确显示 g.length。我收到类型错误。我不太明白 g.length 怎么可以为 null
截图:
index.html 带有 JS 的文件
<!DOCTYPE html>
<html lang="en">
<head>
<script>
function newElement() {
newDiv = document.createElement('div')
newDiv.innerHTML = 'Div 2'
document.getElementById('wrapper').appendChild(newDiv);
}
function updateStats() {
document.getElementById('queryA').innerHTML = q;
document.getElementById('getA').innerHTML = g;
document.getElementById('queryAL').innerHTML = q.length;
document.getElementById('getAL').innerHTML = g.length;
}
</script>
</head>
<body>
<button onClick="newElement();">Add Element</button>
<button onClick="updateStats();">Update Stats</button>
<header id="wrapper">
<div>
Div 1
</div>
</header>
<h3>querySelector Before</h3>
<p>Type:<span id="queryB"></span></p>
<p>Length:<span id="queryBL"></span></p>
<h3>After</h3>
<p>Type:<span id="queryA"></span></p>
<p>Length:<span id="queryAL"></span></p>
<hr>
<h3>getElementByTagName Before</h3>
<p>Type:<span id="getB"></span></p>
<p>Length:<span id="getBL"></span></p>
<h3>After</h3>
<p>Type:<span id="getA"></span></p>
<p>Length:<span id="getAl"></span></p>
<script>
q = document.querySelectorAll('div')
g = document.getElementsByTagName('div')
document.getElementById('queryB').innerHTML = q;
document.getElementById('queryBL').innerHTML = q.length;
document.getElementById('getB').innerHTML = g;
document.getElementById('getBL').innerHTML = g.length;
</script>
</body>
</html>
我搜索了Google但找不到答案,将脚本移动到页面底部没有用。
这种情况下的问题是 document.getElementById('getAL')
为 null 而不是 g.length
第 15 行你得到错误的 id:
试试这个:document.getElementById('getAl').innerHTML = g.length;
我希望证明 HTMLCollection 是一个实时列表,而 NodeList 是静态的。 为此,我将 div 的总数(即 1)存储在页面上的每个变量中(g 表示 HTML,q 表示节点)。我分别使用 GetElementBy... 和 querySelector.... 执行此操作。
console.log(q.length) // 1
console.log(g.length) // 1
然后我使用 JS 创建一个新的 div 并将其附加到页面。 现在总共 divs 2.
console.log(q.length) // 1
console.log(g.length) // 2
它在控制台中一切正常,但是,我无法正确显示 g.length。我收到类型错误。我不太明白 g.length 怎么可以为 null
截图:
index.html 带有 JS 的文件
<!DOCTYPE html>
<html lang="en">
<head>
<script>
function newElement() {
newDiv = document.createElement('div')
newDiv.innerHTML = 'Div 2'
document.getElementById('wrapper').appendChild(newDiv);
}
function updateStats() {
document.getElementById('queryA').innerHTML = q;
document.getElementById('getA').innerHTML = g;
document.getElementById('queryAL').innerHTML = q.length;
document.getElementById('getAL').innerHTML = g.length;
}
</script>
</head>
<body>
<button onClick="newElement();">Add Element</button>
<button onClick="updateStats();">Update Stats</button>
<header id="wrapper">
<div>
Div 1
</div>
</header>
<h3>querySelector Before</h3>
<p>Type:<span id="queryB"></span></p>
<p>Length:<span id="queryBL"></span></p>
<h3>After</h3>
<p>Type:<span id="queryA"></span></p>
<p>Length:<span id="queryAL"></span></p>
<hr>
<h3>getElementByTagName Before</h3>
<p>Type:<span id="getB"></span></p>
<p>Length:<span id="getBL"></span></p>
<h3>After</h3>
<p>Type:<span id="getA"></span></p>
<p>Length:<span id="getAl"></span></p>
<script>
q = document.querySelectorAll('div')
g = document.getElementsByTagName('div')
document.getElementById('queryB').innerHTML = q;
document.getElementById('queryBL').innerHTML = q.length;
document.getElementById('getB').innerHTML = g;
document.getElementById('getBL').innerHTML = g.length;
</script>
</body>
</html>
我搜索了Google但找不到答案,将脚本移动到页面底部没有用。
这种情况下的问题是 document.getElementById('getAL')
为 null 而不是 g.length
第 15 行你得到错误的 id:
试试这个:document.getElementById('getAl').innerHTML = g.length;