У меня есть код html / php, как показано ниже:
Идея состоит в том, чтобы нажать кнопку PLUS (+) и создать новую строку с помощью HTML присутствует в функции newRow () . Код HTML / PHP имеет 2 поля ввода.
html / php код:
<?php
$output = array();
$output['en_desc']=$_POST['en_desc'];
$output['code']=$_POST['code'];
$fp = fopen('../feeds/ptp-ess_landing_committees.json', 'w');
fwrite($fp, json_encode($output));
fclose($fp);
if(file_exists('../feeds/ptp-ess_landing_committees.json')){
$data = json_decode(file_get_contents('../feeds/ptp-ess_landing_committees.json'));
}
?>
<?php if($data) { ?>
<form method="post" id="myform" style="text-align: left;">
<!-- Add New Row Button START -->
<div class="plus-minus-button" style="text-align:center;">
<button type="button" onclick="rowAdd()">+</button>
</div>
<!-- Add New Row Button END -->
<div class="house-senate-committee" style="text-align:center; margin-top:15px;"> <!-- Big div START -->
<!-- Code START -->
<?php if (empty($data->code)) { ?>
<input type="text" name="code[]" style="margin-right:10px;" value="">
<?php } else { ?>
<?php foreach ($data->code as $code){ ?> <!-- Line A -->
<input type="text" name="code[]" style="margin-right:10px;" value="<?php if($code) {echo $code;}?>">
<?php }} ?>
<!-- Code END -->
<!-- EN Desc START -->
<?php if (empty($data->en_desc)) { ?>
<input type="text" name="en_desc[]" value="">
<?php } else { ?>
<?php foreach ($data->en_desc as $en_desc){ ?> <!-- Line B -->
<input type="text" name="en_desc[]" value="<?php if($en_desc) {echo $en_desc;}?>">
<?php }} ?>
<!-- EN Desc END -->
</div> <!-- Big div END -->
</form>
<?php } else {
echo 'Cannot read JSON settings file';
}
?>
Вот JavaScript, который я использую для добавить div в JavaScript.
<script>
function rowAdd() {
document.querySelector(".house-senate-committee:last-child").insertAdjacentHTML('afterend', newRow());
}
function newRow() {
return `<div class="house-senate-committee" style="text-align:center; margin-top:15px;">
<input type="text" name="code[]" style="margin-right:10px;" value="">
<input type="text" name="en_desc[]" value="">
</div>`;
}
</script>
Постановка задачи:
При Линия A и Линия B , я использую для l oop внутри div.house-senate-Committee , так что это может быть причиной, почему она не отображается так, как я хочу. Мне интересно, какие изменения я должен внести в Line A / B (для l oop) , чтобы я мог получить DOM так, как я хочу .
Приведенный выше код javascript показывает содержимое, но не добавление элемента div строка за строкой, как это :
<div class="house-senate-committee" style="text-align:center; margin-top:15px;">
<input type="text" name="code[]" style="margin-right:10px;" value="ABC">
<input type="text" name="en_desc[]" value="DEF">
</div>
<div class="house-senate-committee" style="text-align:center; margin-top:15px;">
<input type="text" name="code[]" style="margin-right:10px;" value="QWE">
<input type="text" name="en_desc[]" value="RTY">
</div>
Его добавление следующим образом (чего не хочу) :
<div class="house-senate-committee" style="text-align:center; margin-top:15px;"> <!-- Big div START -->
<input type="text" name="code[]" style="margin-right:10px;" value="ABC">
<input type="text" name="code[]" style="margin-right:10px;" value="QWE">
<input type="text" name="en_desc[]" value="DEF">
<input type="text" name="en_desc[]" value="RTY">
</div> <!-- Big div END -->