我正在尝试编写一个函数,通过随着时间的推移调整元素的“左”样式来移动元素。它目前根本无法以目前的形式工作。 变量选项卡; var tabPos; 函数初始化(){ tab = document.getElementById("tab"); tabPos = 10.8; tab.style.left = tabPos + '%'; } 函数 moveOver( ) { 如果(tabPos { setTimeout(function moveOver(), 100; tabPos = tabPos + 0.1; tab.style.left = tabPos + '%'; } 否则如果(tabPos > 15.8) { setTimeout(function moveOver(), 100; tabPos = tabPos - 0.1; tab.style.left = tabPos + '%'; } }init 函数成功设置了元素的初始位置,但我将 moveOver 函数添加到不再设置元素位置的代码中。 (adsbygoogle = window.adsbygoogle || []).push({}); 最佳答案 更改行:setTimeout(function moveOver( ), 100;至setTimeout(moveOver, 100);function moveOver( ) 不是有效的 JavaScript 语法。此外,您的括号(或括号)不匹配。因为您有语法错误,所以您的代码将无法运行。对于 setTimeout ,您应该将函数作为第一个参数传递,因此 mouseOver 或 function(){mouseOver();} 将起作用。你的脚本的另一个问题......是你会看到元素不断跳跃。您有两个条件: tabpos < 15.8 和 tabpos > 15.8 。执行不进入两个 if 块之一的条件是 tabpos == 15.8 ...但 JavaScript 的 Number 实际上是一个浮点数。由于精度错误, 15.8 == 15.7 + 0.1 将导致 false ,这表明 15.8 与 15.7 + 0.1 并不完全相同。实际上,15.7 + 0.1 大约等于 15.799999999999999 ...所以我建议你对 tabPos 使用整数值,例如 158 ,并且只在设置样式时将它除以 10 。您的代码的可能结果:var tab;var tabPos;function init() { tab = document.getElementById("tab"); tabPos = 108; tab.style.left = tabPos / 10 + '%';}function moveOver( ) { if (tabPos < 158) { setTimeout(moveOver, 100); tabPos = tabPos + 1; tab.style.left = tabPos / 10 + '%'; } else if (tabPos > 158) { setTimeout(moveOver, 100); tabPos = tabPos - 1; tab.style.left = tabPos / 10 + '%'; } }关于javascript - Javascript 功能问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13620156/ (adsbygoogle = window.adsbygoogle || []).push({});
10-09 16:47