javascript - 类型错误:counters.forEach 不是函数
问题描述
我想用 js DOM 增加值,但是当我尝试运行我的代码时,它会向我显示如下错误:
5 | const Counter = () => {
6 | useEffect(() => {
7 | const counters = document.querySelector(".counter");
> 8 | counters.forEach((counter) => {
9 | counter.innerText = "0";
10 | const updateCounter = () => {
11 | const target = +counter.getAttribute("data-target");
TypeError: counter.forEach is not a function.
我不知道为什么这会显示这样的错误。
我试过以下代码:
import React, { useEffect } from "react";
import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
import { faLaptop } from "@fortawesome/free-solid-svg-icons";
const Counter = () => {
useEffect(() => {
const counters = document.querySelector(".counter");
counters.forEach((counter) => {
counter.innerText = "0";
const updateCounter = () => {
const target = +counter.getAttribute("data-target");
const c = +counter.innerText;
const increment = target / 200;
if (c < target) {
counter.innerText = `${Math.ceil(c + increment)}`;
setTimeout(updateCounter, 1);
} else {
counter.innerText = target;
}
};
updateCounter();
});
}, []);
return (
<div className="cus_counter">
<div className="counter-container">
<i>
<FontAwesomeIcon icon={faLaptop} />
</i>
<div className="counter" data-target="12000"></div>
<span>Twitter Followers</span>
</div>
<div className="counter-container">
<i>
<FontAwesomeIcon icon={faLaptop} />
</i>
<div className="counter" data-target="5000"></div>
<span>Twitter Followers</span>
</div>
<div className="counter-container">
<i>
<FontAwesomeIcon icon={faLaptop} />
</i>
<div className="counter" data-target="1000"></div>
<span>Twitter Followers</span>
</div>
</div>
);
};
export default Counter;
如果我不使用 useEffect,它仍然会显示错误。
请有任何建议。
解决方案
该querySelector
方法返回与文档中指定的 CSS 选择器匹配的第一个元素。该方法forEach
仅适用于数组。你应该querySelectorAll
在这种情况下使用。
顺便说一句,在使用 React 时,最好使用useRef
钩子来引用您的元素。如果您想了解更多信息:https ://reactjs.org/docs/hooks-reference.html#useref
推荐阅读
- shell - Ansible 以交互方式响应非预设远程 shell 输出
- sql-server - 如何动态插入 COLUMN 值?
- python - 我有一个 pytorch 图像分类器训练,我想暂停训练并在程序暂停时保存权重。我可以这样做吗?
- shell - 如何将 sh 的输出保存到 Groovy 变量?
- google-search - Google Custom Search Site Restricted JSON API 超过 10 个站点
- java - 如何将 ApiParam 传递给另一个变量的验证器?
- sql-server - 如何在 SQL Server 2008 中将 dbo 所有权更改为另一个用户登录?
- java - 使用for循环解除阻塞“保持”的方法?
- curl - 我们如何使用 curl 搜索 nexus repo 标签?
- java - 使用 gradle 在 Jar 中包含 pom.xml