首页 > 解决方案 > 如何在javascript中为旋转函数使用变量?

问题描述

我正在尝试使用 transform:rotate() 每秒将元素旋转一定量,但我不知道如何使用变量而不是字符串进行旋转。

我尝试制作一个连接函数以及在旋转函数本身内部进行连接

        function runTime() {

            var d = new Date();
            var s = s+6
            var m = m+.1
            var h = h+.008333
            $("#seconds").css({'transform':'rotate('+s+'deg)'});
            $("#minutes").css({'transform':'rotate('+m+'deg)'});
            $("#hours").css({'transform':'rotate('+h+'deg)'});
            t=setTimeout(runTime,1000);

        }

标签: javascriptvariablesrotation

解决方案


我没有要验证的 jquery,但是您的代码应该可以工作。

  • 确保您的s,mh变量是数字而不是字符串,否则添加s+6将与添加相反。

  • 您可以使用setInterval(runTime, 1000)一次,而不是setTimeout每次迭代

  • 您可以使用字符串模板,例如`rotate(${h}deg`让您的 css 属性更易于阅读。

const $ = document.querySelector.bind(document);

let runTime = () => {
  let d = new Date();
  let s = d.getSeconds() * 6;
  let m = d.getMinutes() * 6
  let h = d.getHours() * 30;
  $("#seconds").style.transform = `rotate(${s}deg)`;
  $("#minutes").style.transform = `rotate(${m}deg)`;
  $("#hours").style.transform = `rotate(${h}deg)`;
}

setInterval(runTime, 1000);
div {
  outline: 1px solid black;
  position: absolute;
}

#hours {
  width: 3px;
  height: 26px;
}

#minutes {
  width: 2px;
  height: 30px;
}

#seconds {
  width: 1px;
  height: 34px;
}
<div id="seconds"></div>
<div id="minutes"></div>
<div id="hours"></div>


推荐阅读