Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Добавить поля, чтоб не чистились атрибуты value (https://javascript.ru/forum/events/5116-dobavit-polya-chtob-ne-chistilis-atributy-value.html)

Alazaur 16.09.2009 18:07

Добавить поля, чтоб не чистились атрибуты value
 
Доброго времени суток!
Вот допустим такой код:

HTML:
<form method="post" action="addtest.php">
     <table>
             <tr>
                 <td id="quest">
                      <ul id="q1"><input type="text" name="q1">
                      <input type="button" onclick="addanswer(this);" value="+" id="button1">
                              <li id="q1a1"><input type="text" name="q1a1"></li>
                      </ul>        
                 </td>
              </tr>
       </table>
</form>

JS:
<script type="text/javascript">
     var i = 1;
     function addanswer(link){
     i++;
     link.parentNode.innerHTML += "<li id=\"q1a"+i+"\">"+i+". <input type=\"text\" name=\"q1a"+i+"\"></li>";
     }
</script>

Проблема в том, что при добавлении нового поля в форму, содержимое уже существующих очищается. Не подскажете как бы это обойти.
Или я может не через то место поля добавляю? :D

Riim 16.09.2009 18:10

http://javascript.ru/tutorial/dom

Alazaur 16.09.2009 18:22

Riim, это ты к чему туда ссылку дал? :)
Если ты имеешь ввиду считывать уже заполненные поля и вставлять их значения заново, то так не получится, - это форма для добавления теста, там заранее неизвестно сколько будет вопросов и сколько в каждом из вопросов вариантов ответа, есть еще одна переменная q и функция добавления нового вопроса, которая сбрасывает текущее значение переменной i, чтобы у каждого поля были уникальные имена типа q1a1, q1a2, q2a1, q2a2 и т.д... под каждым вопросом поле с правильным ответом... можно конечно построить трехэтажный цикл, но по-моему нерационально, вот и справшиваю более логичное решение

Gvozd 16.09.2009 18:43

http://javascript.ru/tutorial/dom/modify
при изменении innerHTML все элементы создаются заново(а значит получают пустое значение)
юзайте createElement и appendChild

Octane 16.09.2009 18:45

Добавляйте элементы не через innerHTML, а с помощью других DOM-методов, позволяющих создать новый элемент (createElement) и вставить его в документ (insertBefore или appendChild). Вся информация для этого есть по ссылке, которую вам дал Riim.

Alazaur 16.09.2009 18:49

а вон оно как :) не знал, что при использовании += все равно заново создаются, спасибо :yes:
Riim, извини, оказывается ты мне верную ссылку дал


Часовой пояс GMT +3, время: 11:43.