微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么 for 循环没有为代码添加数字?

如何解决为什么 for 循环没有为代码添加数字?

我试图增加课程的延迟时间。但似乎为不同项目添加时间不起作用。我的控制台记录了 delay 并且显示为 0。我的 for 循环有什么问题?为什么它不添加时间或数字! 我收到了 Uncaught TypeError 的错误:无法读取未定义的属性 'setProperty'”。但我已经在我的代码中定义了它:见。

//service list add class
let serviceSection = document.querySelector(".service_section");
let serviceList = document.querySelectorAll(".service-list li");

serviceSection.addEventListener("mouseenter",addAnimation);
function addAnimation() {
  serviceList.forEach((currentItem) => {
    currentItem.classList.add("animate__animated","animate__fadeInLeft");
  });
  addDelay();
}

//service list animation delay

function addDelay() {
  let time = 0;
  for (let i = 0; i < serviceList.length; i++) {
    let delayInTime = time + i;
    let currentElement = serviceList[i];
    console.log(currentElement);
    serviceList[i].style.setProperty("--animate-delay",delayInTime + "s");
  }
  serviceList.style.setProperty("--animate-duration","1s");
}
<link href="https://cdnjs.cloudflare.com/ajax/libs/animate.css/4.1.1/animate.min.css" rel="stylesheet"/>
<div class="service_section">
<ul class="service-list">
      <li>fjfdkkdkauejfdk dsskkfks </li>
      <li>fjfdkkdkauejfdk dsskkfks </li>
      <li>fjfdkkdkauejfdk dsskkfks </li>
      <li>fjfdkkdkauejfdk dsskkfks </li>
      <li>fjfdkkdkauejfdk dsskkfks </li>
      <li>fjfdkkdkauejfdk dsskkfks </li>
    </ul>
</div>

解决方法

我们知道您是新来的 :)。但是请更好地提出您的问题。然后你会得到更好的答案。这里有很多才华横溢的工程师。

编辑

-------------------------------------------- -------------------

感谢您指定 animate.css。它有很大帮助:) 这就是你要找的吗?我认为你让它变得比它需要的更复杂。我们只是为每个类添加一个类,并给它 1 秒的延迟。

//service list add class
let serviceSection = document.querySelector(".service_section");
let serviceList = document.querySelectorAll(".service-list li");

serviceSection.addEventListener("mouseenter",addAnimation,{once: true});
function addAnimation() {
  serviceList.forEach((currentItem,idx) => {
    let animateTime = `animate__delay-${idx}s`;
    currentItem.classList.add("animate__animated","animate__fadeInLeft",animateTime);
  });
}
<link href="https://cdnjs.cloudflare.com/ajax/libs/animate.css/4.1.1/animate.min.css" rel="stylesheet"/>
<div class="service_section">
<ul class="service-list">
      <li>fjfdkkdkauejfdk dsskkfks </li>
      <li>fjfdkkdkauejfdk dsskkfks </li>
      <li>fjfdkkdkauejfdk dsskkfks </li>
      <li>fjfdkkdkauejfdk dsskkfks </li>
      <li>fjfdkkdkauejfdk dsskkfks </li>
      <li>fjfdkkdkauejfdk dsskkfks </li>
    </ul>
</div>

需要注意的几点,注意 {once: true} 的使用。你可以阅读它here。另一件事是注意 forEach 有我们可以使用的自己的索引。无需使用额外的 for 循环。

,

好的,所以我使用了不同的名称作为我的变量,但这是我所做的代码片段(我删除了一些没有意义的东西,因为片段不包含所有内容)我确保显示变量声明、事件侦听器以及输入在正常情况下等于输入整数值的内容:

await

对于此代码,3500 表示超时:等于 3.5 秒

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。