Javascript: пара вопросов JS - PullRequest
3 голосов
/ 29 июля 2011

Я изучаю этот материал и пытаюсь понять его, поэтому я использую это вместо 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"? Фактически, если я добавлю «var» перед «tb», «tr», «td» , то выдаст ошибку ... Спасибо!

Ответы [ 2 ]

4 голосов
/ 29 июля 2011

1) innerHTML это просто так.Это inner.Он не содержит HTML самого элемента, но весь HTML, который находится внутри этого элемента.Также есть свойство externalHTML, но оно не включено в Firefox.Единственный кросс-браузерный способ получить externalHTML - это обернуть узел в новый родительский узел и захватить эти узлы innerHTML.Вы не можете просто захватить innerHTML текущего родителя (вам нужно создать нового родителя), если вы не уверены, что у элемента нет родных братьев, потому что если вы сделаете это, родные братья будут включены.

2) Вы используетезапятые, чтобы отделить ваши переменные украшения.Это то же самое, что использовать точки с запятой и ставить var в каждой строке.

0 голосов
/ 13 мая 2013

InnerHtml быстрее, хотя его нет в спецификации. Это просто внутренний html, как сказал вышеупомянутый человек, а не элемент.

Использование одной переменной Var и запятых для разделения переменных переменных - хорошая идея, 1. уменьшить размер файла
2. объявить все переменные вверху. ( чтобы избежать проблемы с подъемом )

...