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");

即使我只为 t 使用 Var 关键字,而不是为其他关键字,为什么即使“使用严格”已打开,它也不会抱怨?事实上,如果我在“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,而不是元素。

使用一个 Var 和逗号分隔变量装饰是一个好主意,1. 减小文件大小,
2. 在顶部声明所有变量。(避免吊装问题

于 2013-05-12T21:01:12.917 回答