innerHTML = var写入控制台而不是页面

时间:2017-08-15 20:53:31

标签: javascript html innerhtml

当我尝试使用以下代码时,innerHTML会写入开发控制台,而不是用myTable替换页面主体。

document.getElementsByClassName('body').innerHTML = myTable;

myTable只是将一系列文本项格式化为表格。我尝试过使用jQuery

$("body").html(myTable);

但是,由于并发症,我试图在javascript中专门执行此操作。

以下完整代码:

var titleArray = [];
var descArray = [];
var myTable = "<table><thead><tr><th>Index</th><th>Item Name</th>
<th>Description</th></tr></thead><tbody>";

var doc = top.frames['bsscright'].document;
titleArray = doc.getElementsByTagName('dt');
descArray = doc.getElementsByTagName('dd');

for (var i = 0; i < titleArray.length; i++) {
  myTable+="<tr><td>" + i + "</td>";
  myTable+="<td>" + titleArray[i].innerText + "</td>";
  myTable+="<td>" + descArray[i].innerText + "</td></tr>";
}

myTable+="</thead></table>";

document.getElementsByClassName('body').innerHTML = myTable;

任何人都可以告诉我为什么.innerHTML =只是将我的表格以文本形式输出到控制台,而不是将我的表格写入页面?

1 个答案:

答案 0 :(得分:2)

使用querySelector来获取第一个body类,这似乎就是您想要的。

document.querySelector('.body').innerHTML = myTable;

否则,您将设置返回的集合的.innerHTML属性,而不是特定元素。

此外,您可以使用模板字符串来使其更好。

var doc = top.frames['bsscright'].document;
var titleArray = doc.getElementsByTagName('dt');
var descArray = doc.getElementsByTagName('dd');

var myTable = "<table><thead><tr><th>Index</th><th>Item Name</th>
<th>Description</th></tr></thead><tbody>";

for (var i = 0; i < titleArray.length; i++) {
  myTable += `<tr><td>${i}</td>
                  <td>${titleArray[i].textContent}</td>
                  <td>${descArray[i].textContent}</td></tr>`;
}

document.querySelector('.body').innerHTML = myTable+"</thead></table>";