javascript-函数仅在第二次调用时有效

ttmt

在这里有一个演示

我有一个由块组成的酒吧,上面有一个标记和一个输入字段

在输入字段中输入数字会将标记滑至该百分比

当标记位于该块上方时,块应更改颜色。

这可以工作,但是只有在标记移至另一个块或再次单击Enter后,这些块才会更改颜色。

当标记移到该块时,为什么块不改变颜色。

const marker = document.querySelector('.bar-marker');
const bars = document.querySelectorAll('.bar-item');
const input = document.querySelector('.value');

(function() {

  input.addEventListener("keyup", (event) => {
    event.preventDefault();
    if (event.keyCode === 13) {
      const inputVal = document.querySelector('.value').value;
      moveBar(inputVal)
    }    
  })

  function moveBar(val){
    marker.style.left = val + '%';
    for(let i=0; i<=bars.length; i++){
      bars[i].classList.remove('selected')
      if(marker.offsetLeft > 
        bars[i].offsetLeft && marker.offsetLeft < 
        bars[i].offsetWidth+bars[i].offsetLeft){
        bars[i].classList.add('selected')
      }
    }
  }

})();
拉曼

这是因为您有一个2s animation滑块过渡,这意味着marker.offsetLeft将具有到达起点的滑块起点值2s delay解决方案是等待2s动画结束,然后运行脚本。

使用setTimeout2.1s可能有效。

function moveBar(val){
    marker.style.left = val + '%';
    setTimeout(function(){ 
      for(let i=0; i<=bars.length; i++){
        bars[i].classList.remove('selected')
        if(marker.offsetLeft > 
          bars[i].offsetLeft && marker.offsetLeft < 
          bars[i].offsetWidth+bars[i].offsetLeft){
          bars[i].classList.add('selected')
        }
      }
    }, 2100);
  }

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Onclick JavaScript函数仅在第二次单击时有效

Javascript函数仅在第二次单击时有效

(Javascript) 递归函数在第一次调用时有效,但在第二次振荡数字时无效

JavaScript / jQuery仅在第二次单击时有效

尝试在按钮单击时旋转div,但仅在第二次单击时有效(使用Javascript)

QLocale setDefault 仅在第二次调用时有效

Javascript函数重复旧调用,第二次调用时

Javascript 循环在第一次运行时有效,但在没有逻辑的情况下第二次给出 NaN

JavaScript fadeOut函数在第二次调用时不起作用

Sails.js / Waterline .add()和.remove()仅在第二次调用时有效

使用jquery序列化上传多个文件仅在第二次调用时有效

PHP函数中的javaScript代码仅在首次调用时有效

JavaScript在使用Node调用时有效,但仅在从HTML调用时才有效

Javascript:JSON请求仅在第一次使用时有效

锚定滚动仅在Angular 6中第二次单击时有效

mousedown事件仅在第二次单击时有效

ajax jquery + bootstrap modal仅在第二次单击时有效

Android按钮仅在第二次点击时有效

jQuery animate()仅在第二次单击时有效

重新加载后,该按钮仅在第二次单击时有效

切换显示仅在第二次点击时有效

Javascript函数第二次执行

JavaScript仅在调用alert()时有效

jQuery仅在第二次单击时有效(但在localhost上可以正常使用...)

Bootstrap4下拉菜单仅在第二次单击时有效

为什么此Toast(Android Studio)仅在第二次单击时有效

jQuery-单击时更改按钮的文本仅在第二次单击时有效

Firebase中的JavaScript变量仅出现在其第二次调用的函数中

仅在调试javascript时有效