Używam AJAX do dołączania danych do elementu div, gdzie wypełniam div z JavaScript, jak mogę dołączyć nowe dane do div bez utraty poprzednich danych znalezionych w div?
javascript
Adham
źródło
źródło
Odpowiedzi:
Spróbuj tego:
źródło
div
zawiera elementy z detektorami zdarzeń lub dane wejściowe z tekstem wprowadzonym przez użytkownika. Polecam odpowiedź Chandu .Korzystanie z appendChild:
Korzystanie z innerHTML:
To podejście usunie wszystkie nasłuchiwania z istniejących elementów, jak wspomniano w @BiAiB. Dlatego zachowaj ostrożność, jeśli planujesz korzystać z tej wersji.
źródło
createTextNode
nie działa, jeśli ładujesz HTML. Jeśli na przykład chcesz dodać elementy listy, to nie zadziała. To dość ograniczające.Uważaj
innerHTML
, jakbyś coś stracił, gdy go używasz:Jest równa:
Które zniszczą wszystkie węzły wewnątrz
div
i odtworzą nowe. Wszystkie odniesienia i słuchacze elementów w nim zawartych zostaną utracone .Jeśli chcesz je zachować (na przykład po dołączeniu modułu obsługi kliknięć), musisz dołączyć nową zawartość do funkcji DOM (appendChild, insertAfter, insertBefore):
źródło
appendChild
dokonał @Cybernatedocument.createTextNode()
.Jeśli chcesz to zrobić szybko i nie chcesz stracić referencji, a detektory używają: .insertAdjacentHTML () ;
„Nie dokonuje ponownej analizy elementu, na którym jest używany, a zatem nie uszkadza istniejących elementów wewnątrz elementu. To i uniknięcie dodatkowego kroku serializacji sprawiają, że jest to znacznie szybsze niż bezpośrednia manipulacja HTML.”
Obsługiwane we wszystkich przeglądarkach głównych (IE6 +, FF8 +, Wszystkie inne i urządzenia mobilne): http://caniuse.com/#feat=insertadjacenthtml
Przykład z https://developer.mozilla.org/en-US/docs/Web/API/Element/insertAdjacentHTML
źródło
insertAdjacentElement()
iinsertAdjacentText()
.Jeśli korzystasz z jQuery, możesz go użyć
$('#mydiv').append('html content')
i zachowa on istniejącą zawartość.http://api.jquery.com/append/
źródło
Nawet to zadziała:
źródło
Rozwiązanie IE9 + (Vista +), bez tworzenia nowych węzłów tekstowych:
Jednak to nie całkiem załatwiło sprawę, ponieważ potrzebowałem nowej linii po każdej wiadomości, więc mój DIV zmienił się w styl UL z tym kodem:
Od https://developer.mozilla.org/en-US/docs/Web/API/Node/textContent :
źródło
możesz użyć jQuery. dzięki czemu jest to bardzo proste.
po prostu pobierz plik jQuery dodaj jQuery do swojego HTML
lub możesz użyć linku online:
i spróbuj tego:
źródło
Poniższa metoda jest mniej ogólna niż inne, ale jest świetna, gdy masz pewność, że twój ostatni węzeł potomny div jest już węzłem tekstowym. W ten sposób nie utworzysz nowego węzła tekstowego za pomocą
appendData
MDN Reference AppendDataźródło
Dlaczego nie skorzystać z setAttribute?
Następnie możesz uzyskać te dane:
źródło
skrypt Java
jquery
Użyj
.html()
bez żadnych argumentów, aby zobaczyć, że wpisałeś. Możesz użyć konsoli przeglądarki, aby szybko przetestować te funkcje przed użyciem ich w kodzie.źródło