function expand(element) {
var target = document.getElementById(element);
var h = target.offsetHeight;
var sh = target.scrollHeight;
var loopTimer = setTimeout('expand(\'' + element + '\')', 10);
if (h < sh) {
h += 1;
} else {
clearTimeout(loopTimer);
alert("伸縮完成");
}
target.style.height = h + "px"
}
答案 0 :(得分:3)
\'
是'
的转义字符,所以这样做是建立一个可以作为函数使用的字符串,它包含一个参数,该参数包含在单引号中...
'expand(\''
以上部分&#34;打开&#34;字符串,将expand(
应用为文字,然后应用转义'
,然后再使用'
来关闭字符串的该部分。所以,回报就是:
expand('
接下来,他们连接元素变量的值:
'expand(\'' + element
字符串现在包含:
expand('elementVariableValue
接下来是打开另一个文字字符串,添加另一个单引号(转义),然后是结束括号:
'\')'
评估为:
')
把它们放在一起,你得到:
expand('elementVariableValue')
(最终将其解释为超时功能)。
现在,使用JavaScript,您可以将"
和'
用于字符串分隔符,这样可能会更容易:
setTimeout("expand('" + element + "')", 10);
答案 1 :(得分:1)
示例中的代码是递归调用。这是一个计时器,回调是expand(element)
。了解这一点,您可以轻松理解var loopTimer = setTimeout('expand(\'' + element + '\')', 10);
表示对expand(element)
的另一次调用。但是,函数expand
需要一个字符串参数,因此它是\'' + element + '\'
。最后,如果此处element
等于scaleid
,我们最终获得expand('scaleid')
,这显然是对expand()
的另一次调用。因为它是字符串,所以需要\'
来逃避它。
答案 2 :(得分:-1)
在Javascript中,您可以将函数的第一个参数作为字符串传递,此字符串的计算方式就像使用eval()一样。如果你每10毫秒调用一次函数expand(&#34;某些东西&#34;)就好了。