Динамически создаю DOM элементы. При каждом попадании в функцию js передаю данные, далее ответ сервера, в success создаю элемент с уникальным id используя Код (Javascript): var div = document.createElement("div"); div.id = ... при первом вызове этой функции все отрабатывает правильно, создает элемент, отображается в DOM структуре, при повторном попадании создает также элемент присваивает ему id, но когда использую appendChild() ругается: Cannot read property 'appendChild' of null. Я как понимаю скрипт отрабатывается раньше загрузки разметки... Какими путями можно решить данную задачу?
@AlexsaiL, слишком много общих слов и мало конкретики. Загляните ещё раз: добавление и удаление узлов и сравните с тем, что делаете сами. Ещё полезно попутно в консоль выводить значения требующих внимания элементов.
Можно вставить сразу так: Код (Javascript): var data = //твой уникальный id; var html = '<div id="'+data+'"></div>'; document.getElementById('test').innerHTML = html; //test это родитель куда вставится этот блок И если у тебя создается сразу много div то делать это в цикле и на сервере.
Я пытаюсь реализовать механизм, где к примеру по клику на кнопку появляется список <select> по событию onchange передаю выбранные параметры в функцию js, далее отправляю данные на сервер, получаю следующий список данных, возвращаю в success, после использую шаблоны template(js) Код (Javascript): <script type="text/template" id="grid-child"> <select name="item_objects" id="list_objects" onchange="javascript:fields_object(<%=id%>,<%=val%>);"> <% for(var i = 0; i < list.length; i++) { %> <option value="<%=list[i].ID%>"><%=list[i].item%></option> <% } %> </select> </script> чтобы прокрутить в цикле получить данные и подставить значение в тег <option> списка <select> в этом же теге снова передаю данные с помощью onchange той же функции js, где она должна так же отправить данные на сервер, получить ответ и создать следующий DOM элемент с другим id и вывести следом за предыдущим в родительском элементе...
Хз что мудрите как то, вот html например: HTML: <select id="list_objects"></select> <button onclick ="getSelectOption"></button> дом элементы создаете на сервере, не зачем клиенту напрягаться: но если все таки использовать для этого js: Код (Javascript): function getSelectOption(){ var list = //получили ваш список var option = ""; for(var i =0; i < list.length; i++){ option += '<option value="'+list[i].ID+'">'+ist[i].item+'</option>'; } document.getElementById('list_objects').innerHTML= option; }