Einfügen von Zeilen in die Tabelle
Was ist die beste plain javascript-Möglichkeit zum einfügen von X Zeilen in einer Tabelle im IE.
Den html-Tabelle sieht wie folgt aus:
<table><tbody id='tb'><tr><td>1</td><td>2</td></tr></tbody></table>
Was ich tun müssen, ist drop den alten Körper, und setzen Sie eine neue mit 1000 Zeilen. Ich habe meine 1000 Zeilen javascript string-variable.
Das problem ist, dass die Tabelle im IE hat keine innerHTML-Funktion. Ich habe schon viele hacks, es zu tun, aber ich will sehen Sie Ihre besten.
Hinweis: mit jquery oder andere Frameworks, die zählen nicht.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hier ist ein großer Artikel von dem Typ, implementiert der IE -
innerHTML=
auf wie bekam er IE dotbody.innerHTML="<tr>..."
:Übrigens der trick, den er anwendet, ist im Grunde, wie alle frameworks machen es für
table
/tbody
Elemente.Bearbeiten: @mkoryak, dein Kommentar sagt mir, haben Sie keine Phantasie und haben es nicht verdient eine Antwort. Aber ich werde humor sowieso. Deine Punkte:
> er ist nicht das einfügen, was ich brauche
Wha? Er ist das einfügen von Zeilen (das hat er als einen html-string) in eine
table
element.> benutzt er auch noch ein zusätzliches hidden-element
Dem Punkt, dass element war, um zu illustrieren, dass für den IE braucht, ist ein "Kontext". Sie könnten ein element verwenden, erstellt on the fly statt (
document.createElement('div')
).> und auch der Artikel ist alt
Bin ich nie zu helfen Sie wieder 😉
Aber im ernst, wenn Sie wollen, um zu sehen, wie andere umgesetzt haben, werfen Sie einen Blick auf das jQuery-Quelle für
jQuery.clean()
oder Prototypen- Element._insertionTranslations
.Tun, wie jQuery funktioniert es, zB. hinzufügen
<table>
und</table>
um ihn herum, legen Sie in das Dokument und verschieben Sie die Knoten, die Sie wollen, wo Sie Sie haben wollen, und Graben, die temp-element.den code endete als diese:
Dinge, beed zu existieren vorher: eine Tabelle, die hat einen Körper mit id "bodyId'. $body ist eine Globale variable (oder Funktion hat einen Verschluss), und es ist ein bisschen jquery in es auch, weil IE nicht evalute-Skripte eingefügt werden in das html-Format auf der fliege.
Ich hatte das gleiche problem (wie viele andere Menschen), und nach viel Herumspielen, hier ist, was ich habe zu arbeiten.
Machen Sie ein tr über Dokument.createelement ('tr') dann machen Sie ein td, der gleichen Weise.
appendchild td tr appendchild die tr zu tbody (nicht Tabelle), DANN können Sie die innerhtml-td, die Sie erstellt und es wird funktionieren.
Dies war der ie8 war ich mit. Grundsätzlich ist die Struktur der Tabelle gemacht werden muss, mit createelement, aber der rest kann es innerHTMLed. Ich habe das gerade in der IE8 debugger, und es würde sagen es würde ihn (wenn ich tr.innerhtml="bla") und geben keine Fehler, aber wäre es nicht angezeigt, und die html-dom-Ansicht zeigte ein sehr gebrochenes Tabelle (kein td jemals auftauchte, aber der /td did)
So, wenn endlich habe ich die tr-UND td durch createelement aufruft, erstellt es eine richtige sucht dom und zog die Seite korrekt.