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 で正常に機能します。これを行うより良い方法はありますか?私がやっていることは、ユーザーがページの一番下に到達したら、テーブル行をテーブルに追加してより多くのコンテンツをロードすることです。これは一種の 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 に答える