2016-07-17 9 views
0
<blockquote id="quote"> 
    No book can ever be finished. While working on it we learn 
    just enough to find it immature the moment we turn away 
    from it. 
</blockquote> 

<script> 
    function elt(type) { 
     var node = document.createElement(type); 
     for (var i = 1; i < arguments.length; i++) { 
      var child = arguments[i]; 
      if (typeof child == "string") 
       child = document.createTextNode(child); 
      node.appendChild(child); 
     } 
     return node; 
    } 

    document.getElementById("quote").appendChild(
     elt("footer", "—", 
      elt("strong", "Karl Popper"), 
      ", preface to the second editon of ", 
      elt("em", "The Open Society and Its Enemies"), 
      ", 1950" 
     ) 
    ); 
</script> 

は、誰かが私が実際に誰かがappendChildメソッドで実際に何が起こっているのか理解できますか?

appendChild方法のdocument.getElementById( "引用")で何が起こっているのか理解するのを助けることができるのappendChild(ELT(...))。

答えて

1

elt関数が作成される要素のタイプであるtypeのパラメータを、(elt("footer")参照)をとるように見えます。また、不特定多数の引数を処理します。文字列である各引数について、その文字列を含むtextNodeを作成します。

appendChild方法は、単純に関数呼び出しがelt()関数呼び出し、それぞれそのうちの2つの6つの引数を、含まれていることを、関数呼び出し(elt())、およびで、あなたの例では、一つの引数、とeltメソッドを呼び出していますその中には2つの引数があり、どちらも文字列です。

あなたが探していたものですか?

+0

どのような引数が_type_であるかは、elt()がどのように知っていますか?関数が呼び出されると、2つの引数があります。 @Nimmo –

+0

"type"は唯一のパラメータであるため、 "type"として渡された最初の引数が表示されます。ただし、JavaScriptのすべての関数は、関数自体で指定されたパラメータの数に関係なく、呼び出された引数にアクセスできます。https://developer.mozilla.org/en/docs/Web/JavaScript/Reference /関数/引数 – Nimmo

+0

あなたの返信に感謝します。 elt()に渡されたパラメータをスワップして出力をチェックしたところ、エラーが表示されました。これは私の疑問を解決する。あなたの助けを仰ぎます。 –

0

elt呼び出しには6つの引数があり、2つの引数はelt()関数呼び出しです。フッターの子要素は「強」と「em」であるため、elt関数の実行順序は次のとおりです。 elt("strong", "Karl Popper")

そして最後にelt("footer", "-", remaining arguments..)機能が6 agrugmentsで呼び出されますelt("em", "The Open Society and Its Enemies")を呼び出すことによって

まずELT機能ビルド子要素。 2つの子ノードが作成されると、 " - "と "、第2のeditonに頭文字"、 "1950"というテキストが追加され、テキスト全体が構築されます。

私が何かを忘れた場合は、お気軽にコメントしてください。

+0

elt()は、それを呼び出す際に渡された引数が_type_引数であることをどのように知っていますか? @ラム –

関連する問題