innerHTML fügt text aber nicht von html-tags
First off sorry für diese Anfänger Frage, aber ich habe gerade vor kurzem gelernt, JavaScript, und ich bin jetzt lernen, zum entwickeln von Windows-8-apps. Hier ist der code in Frage:
var numbers = [1, 2, 3, 4, 5];
id('numberList').innerHTML = '<ul>';
for (var x in numbers) {
id('numberList').innerHTML += '<li>' + x + '</li>';
}
id('numberList').innerHTML = '</ul>';
Habe ich diese in den "bereit" - Funktion (für alle Windows-8-Entwickler) in meiner JS-Datei und 'numbersList" bezieht sich auf ein section-tag in den body (HTML-Datei). Die Liste wird nicht angezeigt, wenn ich bin, der die app ausführt. Allerdings, wenn ich einfach versuchen, das hinzufügen von text anstatt einer Liste wie so
id('numberList').innerHTML = 'hello';
den text zeigen, nicht. Könnte es ein problem mit der Art und Weise bin ich versucht, legen Sie die html-Elemente?
Zusätzlich zu den Antworten: nicht verwenden Sie eine for..in-Schleife mit einem array, so verwenden Sie einen regulären for(;;). Wenn die array-Prototyp wurde geändert (von Ihnen oder einer Dritten Partei), die Fehler verursachen können.
Erst jetzt sah. Dank bfavaretto. Ich werde ihn in Erinnerung behalten.
Erst jetzt sah. Dank bfavaretto. Ich werde ihn in Erinnerung behalten.
InformationsquelleAutor Tariq | 2013-04-18
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie nicht fügen Sie die Stücke von illegalen HTML-ähnlich. Ein
<ul>
tag mit keine</ul>
ist illegal. Bauen Sie die gesamte HTML-string in eine string-variable und fügen Sie dann ein Stück von der gesetzlichen HTML oder bauen die einzelnen DOM-Elemente, setzen Sie den Inhalt in Ihnen und fügen Sie Sie in den DOM.Weiter, Sie nicht Durchlaufen, ein array mit
for (var x in numbers)
als, durchläuft die Eigenschaften eines Objekts, nicht nur die array-Elemente, und während es funktioniert in einigen Fällen, ist in der Regel eine schlechte Praxis ist, sollten Sie nicht verwenden.Können Sie beheben diese Fehler und bauen Sie sich ein HTML-string und fügen Sie es einmal am Ende wie folgt:
Für Vollständigkeit, Sie können auch bauen die einzelnen DOM-Elemente:
Möglicherweise möchten Sie auch zu beachten, dass der original-code, den Sie schrieb, war nicht der Abruf der array-Elemente
numbers[x]
, war aber mit dem array-Indizesx
(der zufällig der gleiche ist wie der Inhalt, so dass Sie würde nicht bemerken einen Unterschied in deinem Beispiel-code). Denn das ist wahrscheinlich nicht das, was Sie soll, Sie wahrscheinlich wollen Sie das auch fix.warum? Entweder Methode gültig ist. Welches am besten ist, hängt von den Umständen.
Sie planen, auf der Flucht alle Ihre Variablen text-Daten für die HTML-sich selbst? Warum würden Sie das tun? Die Erstellung der Elemente und setzen Ihren text und stellt sicher, dass dies nicht ein problem, und das ist der richtige Weg zu gehen. Dies gilt besonders für Daten, die von außen kommen... die Sie nicht wollen, öffnen Sie sich bis zu XSS!
die variable data-hier ist nur eine bekannte Zahl. Es gibt kein problem mit. Sie sind frei, bieten eine Antwort, die erstellt element einzeln, wenn Sie wollen.
was am besten ist, hängt von der situation. Es ist nichts falsch mit der Verwendung
innerHTML
in vielen Fällen. In der Tat, es ist oft schneller, wenn es viele Elemente. Ich will nicht behaupten, das mit Ihnen keiner mehr. Meine Antwort ist einfach, und es funktioniert.InformationsquelleAutor jfriend00
Verwenden Sie niemals
+=
mitinnerHTML
. Stattdessen erstellen Sie die Zeichenfolge und dann legen Sie Sie alle auf einmal, sonst wird der Motor versuchen zu korrigieren, Ihre unvollständige HTML.Mit, dass gesagt wird, eine "bessere" Art und Weise, es zu tun, würde wie folgt Aussehen:
Danke für Eure Hilfe! Beide Antworten waren gut, aber vielen Dank für die Aufnahme der Beispiel-code, wenn Sie erklären könnten, das zweite "bessere Weg" das wäre wunderbar.
InformationsquelleAutor Niet the Dark Absol