什么是“;(''+元素+'')“;意思是

What does "('' + element + '')" mean?

本文关键字:意思是 元素 什么      更新时间:2023-09-26
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"
}

'''的转义符,因此它所做的是构建一个可以作为函数使用的字符串,该字符串包含一个参数,该参数用单引号包装。。。

'expand('''

上面的部分"打开"字符串,将expand(作为文字应用,然后是转义的',再加上一个'以关闭字符串的该部分。因此,这方面的回报是:

expand('

接下来,他们连接元素变量的值:

'expand(''' + element

字符串现在包含:

expand('elementVariableValue

下一步是打开另一个文本字符串,添加另一个单引号(转义),然后是结束括号:

''')'

这被评估为:

')

把它们放在一起,你就会得到:

expand('elementVariableValue')

(最终解释为超时的函数)。

现在,使用JavaScript,您可以同时使用"'作为字符串分隔符,因此可能更容易:

setTimeout("expand('" + element + "')", 10);

示例中的代码是一个递归调用。它是一个计时器,回调为expand(element)。理解这一点,你就可以很容易地理解var loopTimer = setTimeout('expand(''' + element + ''')', 10);意味着对expand(element)的又一次调用。但是函数expand需要一个字符串参数,所以''' + element + '''是。最后,如果这里的element等于scaleid,我们最终得到expand('scaleid'),这显然是对expand()的另一个调用。因为它在字符串中,所以需要''对其进行转义。

在Javascript中,您可以传递一个字符串作为函数的第一个参数,该字符串的求值方式就像使用eval()一样。该代码类似于每10毫秒调用一次函数expand("something")。