2017-11-12 3 views
0

クローム開発コンソールのこの不思議な出力は、childElementCountでタイムアウトを実行したときに何が起きるのか不思議でした。JS:タイムアウトを設定しても子要素の数が0になっていない

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>

それだけで正常に動作しますと次のように試してみてください私に子供

+0

今、私は正しい入力し、別の神秘的な入力を得ているとは対照的に、私はまったく正しい入力を取得していなかった前ので申し訳ありませんが、タイトルが間違っています。 –

+0

setTimeoutは、関数を引数として想定しています。**関数を呼び出す**結果を渡しています。 –

+0

表示される値の増加は、 'setTimeout'の戻り値です。開発ツールは、最後に入力した式の結果を記録します。たとえば、 '5 + 7'は' 12'を出力します。 –

答えて

0

の正しい数を与える:機能の

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

setTimeout(eggs, 3000); 

名はキャメルケースでなければなりません!

eggs変数は関数を格納しますが、eggs() - それを呼び出す結果(関数が返す値)を与えます。

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

setTimeout(eggs(), 3000); 
+0

なぜ卵を変えましたか?それだけでいいのではないですか?私は、答えは... settimeoutのEggs()からどこから削除するのか...そして、あなたはそれらを正当化せずに多くの変更を加えたのです –

+0

なぜ私はそれを削除するのですか?実際に何が起こっているのですか? –

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>

関連する問題