Как динамически создавать новый div, изменять его, перемещать, всячески модифицировать в JavaScript?


82

Я хочу создавать новые div по мере загрузки страницы. Эти div будут отображаться в виде упорядоченной группы, которая изменяется в зависимости от внешних данных из файла JSON. Мне нужно будет сделать это с помощью цикла for, потому что требуется более 100 div.

Итак, мне нужно иметь возможность изменять каждый созданный div по высоте, ширине, верхнему / левому и так далее. Тем document.getElementById("created_div").style.whateverне менее, ничего не делает, я даже не вижу ни одного нового div. Я установил новую высоту / ширину div на 500 пикселей, фон на «красный» и так далее, но никаких новых div определенно не появляется.

Что я делаю неправильно?


2
Поделитесь кодом, который вы используете для создания
div

1
$ ("# box0"). append ('<div id = "created_div"> </div>');
Эрик Нельсон

Если вы делаете это в цикле, означает ли это, что вы пытаетесь создать 100 div с тем же идентификатором?
Эван Тримболи

посмотри в консоли браузера ... есть ошибки? Несмотря на то, что идентификатор не должен повторяться ... не должен останавливать его вставку, если селектор существует и нет ошибок. Ошибки являются первой критической проверкой
charlietfl

Помимо их создания, вы вставляете их в DOM?
Габриэле Петриоли

Ответы:


428

Это охватывает основы манипулирования DOM. Помните, что добавление элемента к основному тексту или содержащемуся в нем узлу требуется для того, чтобы вновь созданный узел был видим в документе.


-1

Вы пробовали JQuery ? Ванильный javascript может быть сложным. Попробуйте использовать это:

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

.container-element- это селектор JQuery, который помечает элемент классом «контейнер-элемент» (предположительно родительский элемент, в который вы хотите вставить свои div). Затем add()функция вставляет HTML в элемент-контейнер.


Хорошо, я понял. Мне пришлось установить padding больше 0. Хотя его высота и ширина равны 64 каждая. Блех. Есть ли способ, чтобы дочерний div действовал как обычный div? Цель состоит в том, чтобы каждый div действовал как ссылка. Попытка создать динамический список для веб-сайта игры; /
Эрик Нельсон

1
Я не согласен с этим, innerHTML (то, что jquery использует для этого) НЕ является стандартом, и цена несоблюдения стандарта может привести к неправильному поведению. Кроме того, для меня не имеет смысла добавлять строку html плана в дерево DOM вместо добавления узловых элементов.
StormByte

2
Учитывая, что все дерево DOM начинает свою жизнь как простой старый HTML, и этот innerHTML - это всего лишь HTML-код, содержащийся в элементе, имеющий проблемы с любым из них, соответствует тому, что вы не должны использовать DOM, потому что он загрязнен старый добрый HTML.
Родни П. Барбати
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.