2014-01-03 1 views
0

Проблема: Я дублирую div с помощью кнопки. В Див являются частями формы:Значение значения атрибута firstChild

<form method="post" action="order-opstellen.php"> 
    <div id="duplicate"> 
    <input type="hidden" id="counter" value="0"> 
    </div> 
    <input type="button" onclick="duplicate()" value="Add"> 
    <button type="submit">Send</button> 
</form> 

Я использую этот скрипт:

<script type="text/javascript"> 
var i = 0; 
var original = document.getElementById('duplicate'); 
function duplicate() { 
    var clone = original.cloneNode(true); 
    clone.id = "duplicate" + ++i; 
    clone.style.clear = "both"; 
    original.parentNode.appendChild(clone); 
    var tempId = document.getElementById("duplicate" + i); 
    tempId.childNodes[0].value=i; 
} 
</script> 

Как вы можете видеть, я пытаюсь изменить значение каждого входа. Добавляя его с 1 каждый раз, когда я дублирую div. Очевидно, что он не работает. Как мне это сделать?

Update:

Так что я получил эту первую часть работу. Теперь мне нужно идти глубже.

<form method="post" action="order-opstellen.php"> 
    <div id="duplicate"> 
    <input type="hidden" id="counter" value="0"> 
    <div class="form-group dispWidth fl"> 
     <label>Productnaam</label> 
     <select class="form-control dispWidth" name="productnaam"> <?php 
     $sql_products = "SELECT * FROM product ORDER BY naam"; 
     $results = $conn->query($sql_products)->fetchAll(PDO::FETCH_OBJ); 
     foreach ($results as $row) { 
     ?> 
      <option value="<?= $row->productnr ?>"><?= $row->naam ?></option> 
      <?php } 
      ?> 
     </select> 
    </div> 
<div class="form-group dispWidth fl ml"> 
    <label>Aantal</label> 
    <input type="text" name=amountCount class="form-control dispWidth" placeholder="Hoeveelheid"> 
</div> 
</form> 

Что я хочу - каждый раз, когда я дублирую div, имя-выбор должен быть уникальным. Также имя последнего ввода должно быть уникальным (amountCount). Вероятно, сопоставляя переменную i за ними как (productnaam1, productnaam2, amountCount1.). Как?!

ответ

3

childNodes[0] - это текстовый узел, содержащий новую строку и отступ.

Попробуйте children[0] вместо этого.

Кроме того, tempId относится к той же самой вещи, как clone, так что просто использовать clone.children[0].value = i;

+0

Это работает! Спасибо. – Ken

+0

У меня есть другая проблема, она размещена как обновление. Не могли бы вы помочь мне? – Ken

+0

В общем, вы должны использовать 'name = 'something []'', если у вас их несколько. На стороне сервера вы получите '$ _POST ['something']' как массив. –