0

我正在创建一个小程序,它使用 CSS3 的 transform 属性和 JavaScript 的 SetTimeout 方法连续旋转图像 360 度。我能够通过搜索获得所需的结果。程序运行良好,但我无法理解一件事:为什么在 setTimeout 中,我们需要反斜杠后跟单引号。

setTimeout('rotateAnimation(\'' + elem + '\', '+ speed + ')',speed);

相关的完整代码是:内部头脚本:

<script>
var degrees=0;
function rotateAnimation(elem, speed){
    var el=document.getElementById(elem);
    if(navigator.userAgent.match("Chrome")){
        el.style.WebkitTransform="rotate(" +degrees + "deg)";
        } else if(navigator.userAgent.match("Mozilla")){
            el.style.MozTransform="rotate(" +degrees + "deg)";
            }
    setTimeout('rotateAnimation(\'' + elem + '\', '+ speed + ')',speed);
    degrees++;
    if(degrees>359)
    degrees=0;
    }
</script>

机身内部:

<img id="img1" width="150px" height="150px" src="culture.png" />
<script>
rotateAnimation("img1", 200);
</script>
4

2 回答 2

2

反斜杠是许多语言的字符串转义字符。反斜杠允许在不使用保留含义的情况下将保留字符键入字符串。如果您没有反斜杠,则引号将标记字符串的结尾,而不是在字符串中插入引号。

之所以需要引号,是因为该参数是一个字符串参数,需要引号终止。

于 2013-08-27T07:38:27.570 回答
1

您的陈述中至少有三个错误的假设:

为什么在 jQuery 注释中需要反斜杠后跟单引号

  • \'不需要
  • 整个代码片段与jQuery无关
  • 该行不是评论

我会亲自将这一行改写为:

setTimeout(function(){
    rotateAnimation(elem, speed);
}, speed);

它更干净,更不容易出错。

于 2013-08-27T07:46:27.197 回答