var int = self.setInterval("mOut()",3000); function mOut(){ inner.style.transform="rotateY("+360+"deg)"; inner.style.transition = "transform 3s"; }优化代码
时间: 2023-11-20 18:06:23 浏览: 94
可以将定时器的回调函数直接传入 setInterval 中,避免使用字符串形式,同时可以将 inner.style.transform 和 inner.style.transition 合并为一行,避免多次操作 DOM。优化后的代码如下:
```
var int = setInterval(function() {
inner.style.cssText = "transform: rotateY(360deg); transition: transform 3s;";
}, 3000);
```
另外,建议将变量名 int 改为更具描述性的名称。
相关问题
var inner = document.getElementsByClassName('inner'); // onmouseover="mOver(this)" onmouseout="mOut(this)" // aEle[i].style.transform = "rotateY(" + (i * (360 / aEle.length)) + "deg) translateZ(" + radius + "px)"; var int = self.setInterval("mOut()",3000); function mOut(){ inner.style.transform="rotateY("+360+"deg)"; inner.style.transition = "transform 3s"; }优化代码
首先,`setInterval`中传递的参数应该是一个函数名或函数表达式,而不是一个字符串。所以应该将`setInterval`的参数改为`setInterval(mOut, 3000)`。
另外,`getElementsByClassName`返回的是一个HTMLCollection,而不是一个单独的元素。因此,应该使用`inner[0]`来获取第一个匹配的元素。
最后,`mOut`函数中的`rotateY`值应该是相对于当前的值进行旋转,而不是固定的360度。所以应该先获取当前的rotateY值,再加上360度。
优化后的代码如下:
```
var inner = document.getElementsByClassName('inner')[0];
var int = setInterval(mOut, 3000);
function mOut() {
var currentRotation = parseInt(inner.style.transform.replace(/[^0-9\-]/g, ''));
inner.style.transform = "rotateY(" + (currentRotation + 360) + "deg)";
inner.style.transition = "transform 3s";
}
```
阅读全文