3

私はこのことを学び、理解しようとしているので、innerhtml の代わりにこれを使用しています。

私のコード:

  <script>
function load() {
"use strict";

var t  = document.createElement("table"),
    tb = document.createElement("tbody"),
    tr = document.createElement("tr"),
    td = document.createElement("td");

    var b = document.createElement("b");
b.appendChild(document.createTextNode(" name!"));
td.appendChild(document.createTextNode("Hello"));
td.appendChild(b); 

    t.style.width = "100%";
    t.style.borderCollapse = 'collapse';
    t.border=1;

    // note the reverse order of adding child        
    tr.appendChild(td);
    tb.appendChild(tr);
    t.appendChild(tb);

   // more code to populate table rows and cells
   document.getElementById("theBlah").appendChild(t);
alert(t.innerHTML);
   }
</script>
 </head>

 <body  onload="load()">

問題は、タグが表示されず、代わりに表示されるonload()ことです...理由は何ですか?<table><tbody>

そして最後に、このコードでは:

var t  = document.createElement("table"),

 tb = document.createElement("tbody"),
 tr = document.createElement("tr"),
 td = document.createElement("td");

Var キーワードを t だけに使用していて、他のキーワードには使用していないのに、「use strict」がオンになっているにもかかわらず文句を言わないのはなぜですか? 実際、「tb、tr」、「td」の前に「var」を追加するとエラーがスローされます...ありがとう!

4

2 に答える 2

4

1) innerHTML はまさにそれです。ですinner。要素自体の HTML は含まれませんが、その要素内にあるすべての html が含まれます。outerHTML というプロパティもありますが、Firefox には含まれていません。クロス ブラウザーで outerHTML を取得する唯一の方法は、新しい親ノードでノードをラップし、そのノードの innerHTML を取得することです。要素に兄弟が含まれていないことが確実でない限り、現在の親の innerHTML を取得することはできません (新しい親を作成する必要があります)。

2) 変数の装飾を区切るためにコンマを使用しています。これは、セミコロンを使用varして各行に配置するのと同じです。

于 2011-07-29T04:54:35.867 に答える
0

InnerHtml は、仕様に含まれていなくても高速です。上記の人が言ったような単なる内部htmlであり、要素ではありません。

変数の装飾を区切るために 1 つの Var とカンマを使用することをお勧めします。1. ファイル サイズを小さくするため、
2. すべての変数を先頭で宣言するためです。(巻き上げ問題を避けるため)

于 2013-05-12T21:01:12.917 に答える