javascript - JavaScript 函数中的元素仅更改一次

标签 javascript

我试图通过重复更改 document.getElementById("ElementID").style.left 的值,使用 JavaScript 使元素“振动”。我在特定函数中对其进行了多次更改,但不是每次更改时都移动它,而是仅在函数末尾(即我最后一次进行更改时)移动。 HTML 代码如下:

<html>
  <body>
    <script>
        function changePosition() {
            if (document.getElementById("ElementID").style.left == "50%") {
                document.getElementById("ElementID").style.left = "52%";
            } else {
                document.getElementById("ElementID").style.left = "50%";
            }
        }

        function vibrate() {
            changePosition();
            setTimeout(changePosition, 50);
            setTimeout(changePosition, 50);
            setTimeout(changePosition, 50);
            setTimeout(changePosition, 50);
        }
    </script>
    <button id="ElementID" type="button" style="position:absolute; top:50%; left:50%;" onclick="vibrate()">Vibrate Me</button>
  </body>
</html>

最后我只能看到按钮应有的位置,但看不到更改期间的转换。我做错了什么?

最佳答案

似乎所有超时都会同时执行。尝试更改为这个

setTimeout(changePosition,100);
setTimeout(changePosition,200);
setTimeout(changePosition,300);
setTimeout(changePosition,400);

for (var i = 1; i < 5; i++) {
   setTimeout(changePosition,100*i);
}

关于javascript - JavaScript 函数中的元素仅更改一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20546966/

相关文章:

javascript - 双击时如何显示图钉?

javascript - (Vue.js)如何使用数据中数值数组中的选项标签填充选择标签?

javascript - 在水平滚动页面的某个点停止

javascript - 使用递归和减少来做一个数组的总和

javascript - 测试用户点击 true 还是 false

javascript - Jquery 隐藏在我的对话框关闭跨度中不起作用

javascript - asp.net 如何在悬停鼠标时弹出 div?

javascript - 如何读取父域 cookie

javascript - 您如何编写一个按钮,使其在单击时可以使 iframe 变为全屏?

javascript - 如何清除以 setInterval 启动的计时器?