JS:设置超时不使用子元素计数

时间:2017-11-12 06:38:51

标签: javascript timeout

我想知道当我使用childElementCount运行超时时chrome dev控制台中的这个神秘输出是什么,并且每次重新运行该函数时它似乎都会增加1。

function Eggs(){
var f = document.getElementById("x").childElementCount;
console.log(f);
}
setTimeout(Eggs(), 3000);
/* output should be:
0
8
in the chrome console */
<!DOCTYPE html>
<html>

<body>
    <div>
        <div>
            <div id="x"></div>
        </div>
    </div>
</body>

</html>

它工作得很好并且给了我正确数量的孩子

2 个答案:

答案 0 :(得分:0)

尝试下一步:

let eggs = function () {
    let el = document.getElementById('x');
    console.log(el.childElementCount);
};

setTimeout(eggs, 3000);

函数名称必须在camelCase中!

eggs变量存储函数,但是eggs() - 给我们调用它的结果(函数返回时会有什么)。

let eggs = function () {
    return function () {
        let el = document.getElementById('x');
        console.log(el.childElementCount);
    };
};

setTimeout(eggs(), 3000);

答案 1 :(得分:0)

setTimeout(function Eggs(){
var f = document.getElementById('x').childElementCount;
console.log(f)
},3000);
<!DOCTYPE html>
<html>

<body>
    <div>
        <div>
            <div id="x"></div>
        </div>
    </div>
</body>

</html>