Код (Text): var dohod_all_code_array = "<?php echo implode(",",$dohod_code_array) ?>"; var dohod_code_array = dohod_all_code_array.split(","); var dohod_all_id_array = "<?php echo implode(",",$dohod_id_array) ?>"; var dohod_id_array = dohod_all_id_array.split(","); var countOfFields = 1; // Текущее число полей function deleteField(a) { var contDiv = a.parentNode; contDiv.parentNode.removeChild(contDiv); countOfFields--; return false; } function addField() { countOfFields++; var divElement = document.createElement("div"); var selectElement = document.createElement("<select name='dohod_id' class='inputselect'>"); var inputElement = document.createElement("<input type='text' name='summ' class='inputsumm' onKeyDown='return comaReplace(this)'>"); var aElement = document.createElement("<a onclick='return deleteField(this)' href='#'>"); var optionElement = document.createElement("option"); optionElement.value = "null"; optionElement.innerHTML = "Оберіть код доходу"; selectElement.appendChild(optionElement); for(i=0; i<dohod_code_array.length; i++){ optionElement = document.createElement("option"); optionElement.value = dohod_id_array[i]; optionElement.innerHTML = dohod_code_array[i]; selectElement.appendChild(optionElement);} aElement.innerText = "[-]"; divElement.id = "dohod_id"+countOfFields; divElement.appendChild(selectElement); divElement.appendChild(inputElement); divElement.appendChild(aElement); document.getElementById("select").appendChild(divElement); // Возвращаем false, чтобы не было перехода по сслыке return false; } В ИЕ8 работает нормально, создает новые селекты и форму для ввода... а вот в лисе, хроме, опере не хочет работать, просто не добавляет новые объекты.. Подскажите есть ли кросбраузерное решение?
https://developer.mozilla.org/en/DOM/do ... ateElement если хотите быстро и кроссбраузерно - используйте jquery. А вообще, насколько я помню, три года назад сам парился с динамическим созданием селектов - у меня они пустые на страницу добавлялись (именно в FF & opera). Как решил, не помню. Может быть и отказался от этой идеи.
все, вопрос снят. Вся проблема заключалась в том, что во всех браузерах, кроме ИЕ (как оказалось придуркам закон(стандарт) не писан (wc3)) необходимо создавать новые элементы указывая только их название, а прочее указывать уже через атрибуты: данный код получился уже кроссбраузерный: Код (Text): var dohod_all_code_array = "<?php echo implode(",",$dohod_code_array) ?>"; var dohod_code_array = dohod_all_code_array.split(","); var dohod_all_id_array = "<?php echo implode(",",$dohod_id_array) ?>"; var dohod_id_array = dohod_all_id_array.split(","); var countOfFields = 1; function deleteField(a) { var contDiv = a.parentNode; contDiv.parentNode.removeChild(contDiv); countOfFields--; return false; } function addField() { countOfFields++; var divElement = document.createElement("div"); var selectElement = document.createElement("select"); var inputElement = document.createElement("input"); var aElement = document.createElement("a"); selectElement.name = "dohod_id"; selectElement.className = "inputselect"; var optionElement = document.createElement("option"); optionElement.value = "null"; optionElement.innerHTML = "Оберіть код доходу"; selectElement.appendChild(optionElement); for(i=0; i<dohod_code_array.length; i++){ optionElement = document.createElement("option"); optionElement.value = dohod_id_array[i]; optionElement.innerHTML = dohod_code_array[i]; selectElement.appendChild(optionElement);} inputElement.type = "text"; inputElement.name = "summ"; inputElement.className = "inputsumm"; inputElement.onkeydown = function (){comaReplace(this)}; aElement.innerHTML = '[-]'; aElement.href = "#"; aElement.className = "pages"; aElement.onclick = function (){deleteField(this)}; divElement.id = "dohod_id"+countOfFields; divElement.appendChild(selectElement); divElement.appendChild(inputElement); divElement.appendChild(aElement); document.getElementById("select").appendChild(divElement); return false; }