5

在 Internet Explorer 中,这条线document.getElementById("left").getElementsByTagName("tbody")[0].innerHTML = document.getElementById("left").getElementsByTagName("tbody")[0].innerHTML + string;给了我一个SCRIPT600: Invalid target element for this operation. …character 10

字符串只是包含一组表格行的字符串。这在 Chrome、Safari 或 Firefox 中运行良好。有没有更好的方法来做到这一点?我正在做的是一旦用户到达页面底部,我将 tablerows 附加到表格中以加载更多内容。这是一种 AJAX 无限滚动类型的交易 - 客户请求。我正在使用 Javascript,此时我更愿意继续使用 Javascript,而不是仅仅为了这个任务而改用 jQuery。

更新也一样:document.getElementById("left").innerHTML = document.getElementById("left").innerHTML + string; 另外,左边是<table id="left">

4

2 回答 2

4

是的,您需要先像这样包装它们:

var div = document.createElement("div");
div.innerHTML = "<table><tbody>" + string + "</tbody></table>";

document.getElementById("left")
  .appendChild(div.firstChild.tBodies[0]);
于 2013-03-01T01:06:04.940 回答
0

当您需要在表格末尾插入表格行时,方式略有不同。您的新代码,例如 new <tr>,应该在名为 的变量中html

if (document.attachEvent) { //if using old IE
    var currentTable = document.querySelector("#myTable");
    var currentTableHTML = currentTable.outerHTML;

    //replace closing tag with new code + closing tag
    currentTableHTML = currentTableHTML.replace("</tbody>", html + "</tbody>";

    currentTable.parentNode.removeChild(currentTable);

    //reinsert the table before some other element - you can use something else if you have a container for the table
    document.querySelector("#someElement").insertAdjacentHTML("beforebegin", currentTableHTML);
}
else {
    //use insertAdjacentHTML in a normal browser
}
于 2016-09-20T10:38:10.417 回答