innerHTML = var 写入控制台而不是页面
innerHTML = var writes to console instead of to page
当我尝试使用以下代码时,innerHTML 写入开发控制台,而不是用 myTable 替换页面主体。
document.getElementsByClassName('body').innerHTML = myTable;
myTable 只是格式化为 table 的一系列文本项。我试过使用 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 = 只是将我的 table 以文本形式输出到控制台,而不是将我的 table 写入页面?
改用querySelector
得到第一个body
class,这似乎是你想要的。
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>";
当我尝试使用以下代码时,innerHTML 写入开发控制台,而不是用 myTable 替换页面主体。
document.getElementsByClassName('body').innerHTML = myTable;
myTable 只是格式化为 table 的一系列文本项。我试过使用 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 = 只是将我的 table 以文本形式输出到控制台,而不是将我的 table 写入页面?
改用querySelector
得到第一个body
class,这似乎是你想要的。
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>";