Jak dynamicznie tworzyć nowe divy, zmieniać, przenosić, modyfikować w każdy możliwy sposób w JavaScript?

82

Chcę tworzyć nowe elementy div podczas ładowania strony. Te elementy DIV będą wyświetlane jako uporządkowana grupa, która zmienia się w zależności od danych zewnętrznych z pliku JSON. Będę musiał to zrobić za pomocą pętli for, ponieważ potrzeba ponad 100 elementów div.

Muszę więc mieć możliwość zmiany każdego utworzonego elementu div pod względem wysokości, szerokości, góry / lewej i tak dalej. Jednak document.getElementById("created_div").style.whatevernic nie robi, nie widzę nawet żadnego nowego elementu div. Ustawiłem wysokość / szerokość nowych elementów div na 500px, tło na „czerwone” i tak dalej, ale na pewno nie pojawiają się żadne nowe elementy div.

Co ja robię źle?

Erik Nelson
źródło
2
Udostępnij kod, którego używasz do tworzenia elementów div
wakooka
1
$ ("# box0"). append ('<div id = "created_div"> </div>');
Erik Nelson
Jeśli robisz to w pętli, czy to oznacza, że ​​próbujesz utworzyć 100 elementów div o tym samym identyfikatorze?
Evan Trimboli
zajrzyj do konsoli przeglądarki ... jakieś błędy? Choć ID nie należy powtarzać ... nie powinien zatrzymać to jest włożona czy selektor istnieje i nie ma błędów thrown.Errors są pierwsze krytyczne check
charlietfl
czy oprócz ich tworzenia wstawiasz je do DOM?
Gabriele Petrioli

Odpowiedzi:

428

To obejmuje podstawy manipulacji DOM. Pamiętaj, że dodanie elementu do treści lub węzła zawartego w treści jest wymagane, aby nowo utworzony węzeł był widoczny w dokumencie.

Ryan Stein
źródło
-1

Czy próbowałeś już JQuery ? Waniliowy javascript może być trudny. Spróbuj użyć tego:

$('.container-element').add('<div>Insert Div Content</div>');

.container-elementjest selektorem JQuery, który oznacza element klasą „element-kontenera” (prawdopodobnie element nadrzędny, do którego chcesz wstawić swoje elementy div). Następnie add()funkcja wstawia HTML do elementu kontenera.

Brad Ross
źródło
Cóż, rozumiem. Musiałem ustawić dopełnienie na większe niż 0. Mimo że jego wysokość i szerokość są ustawione na 64 każdy. Bleh. Czy istnieje sposób, aby element DIV podrzędny działał jak normalny element DIV? Celem jest, aby każdy element div działał jak łącze. Próbuję stworzyć dynamiczną listę dla strony z grami; /
Erik Nelson
1
Nie zgadzam się z tym, innerHTML (czego używa do tego jquery) NIE jest standardem, a cena za nieprzestrzeganie standardu może prowadzić do niewłaściwego zachowania. Ponadto, dla mnie nie ma sensu dodawanie ciągu html planu do drzewa DOM, zamiast dodawać elementy węzłów.
StormByte
2
Biorąc pod uwagę, że całe drzewo DOM zaczyna życie jako zwykły stary HTML, a ten innerHTML jest po prostu tym - HTML, który ma w sobie element, problem z którymkolwiek z nich jest równy stwierdzeniu, że nie powinieneś używać DOM, ponieważ jest zanieczyszczony zwykły stary HTML.
Rodney P. Barbati