javascript - by class name counter not work in javascript
问题描述
i create a counter.
dk = parseInt(document.querySelector('.dm').innerText);
for (var i = 0; i <= dk; i++) {
(function(i) {
setTimeout(function() {
document.querySelector('.dm').innerText = i;
}, i * 100);
})(i);
}
console.log(dk);
.counter { display: flex; }
.dm {
background: tomato;
padding: 15px;
font-size: 5em;
font-weight: 700;
width: 100px;
height: auto;
text-align: center;
margin: 0 2px;
}
<div class="counter">
<div class="dm">40</div>
<div class="dm">30</div>
</div>
problem is only first div counter is working. can we parse element of innerHTMl by html dom like classname...i try but result is Nan. i want run all counter if i add same classname with different inner values.
解决方案
您的问题是您正在使用document.querySelector()
.
当你使用document.querySelector('.dm')
它时,它只会返回匹配这个选择器的第一个元素,你需要使用它document.querySelectorAll('.dm')
来获取所有匹配的元素。
但是对于多个元素,您将需要一个循环来执行此操作,因为querySelectorAll()
将返回nodeList
一个集合(array
)。
这应该是你的代码:
var elements = document.querySelectorAll('.dm');
Array.from(elements).forEach(function(el, ind){
let dk = parseInt(elements[ind].innerText)
for (var i = 0; i <= dk; i++) {
(function(i) {
setTimeout(function() {
elements[ind].innerText = i;
}, i * 100);
})(i);
}
});
演示:
var elements = document.querySelectorAll('.dm');
Array.from(elements).forEach(function(el, ind){
let dk = parseInt(elements[ind].innerText)
for (var i = 0; i <= dk; i++) {
(function(i) {
setTimeout(function() {
elements[ind].innerText = i;
}, i * 100);
})(i);
}
});
.counter { display: flex; }
.dm {
background: tomato;
padding: 15px;
font-size: 5em;
font-weight: 700;
width: 100px;
height: auto;
text-align: center;
margin: 0 2px;
}
<div class="counter">
<div class="dm">40</div>
<div class="dm">30</div>
</div>
推荐阅读
- audio - FFmpeg Decklink 播放音频 PCM
- php - 验证 JSON 请求是一个数组,而不是一个对象
- docker - Elasticsearch docker容器占用了我所有的磁盘空间,找不到在哪里
- bash - 使用 Markdown.pl 批量转换 Markdown 文件
- python - unet 生成灰色预测图像
- python - Python Set_Blob_Metadata 和自身位置参数
- javascript - 通过选中复选框计算总价
- python - 如何在 Pandas DataFrame 中制作大写字母?
- angular - 为什么 Azure Web App Service 无法在它正在运行的 docker 容器中找到 ng?
- node.js - NodeJs - 如何使用socket.io将tcp数据包发送到局域网中的另一台计算机