Kopiuj
<input type="number" id="pole_dodaj">
Kopiuj
function Dodaj_Pole(){
document.getElementById('pole_dodaj').innerHTML += pole_dodaj;
}
Pobierasz pole input
i do niego próbujesz dodać nowe pole, więc dlatego nie działa.
Nie wiem, czy wiesz, ale znacznik input
nie może posiadać w sobie żadnych innych elementów HTML, tekstu i takie zapisy są nieprawidłowe
Kopiuj
<input>
Tutaj jakiś tekst
</input>
<input>
<p>
Tutaj jakiś tekst
</p>
</input>
<input>
<input>
</input>
Musisz dodać atrybut id, albo klasę do jakiegoś elementu blokowego np diva
Kopiuj
<div id="dynamic-inputs"></div>
przenieść do niego dwa pierwsze pola
Kopiuj
<div id="dynamic-inputs">
<div>
<input type="number">
</div>
<div>
<input type="number">
</div>
</div>
i teraz po stronie javascriptu napisać kod, który dodaje nowe pole do znacznika #dynamic-inputs
.
Początek skryptu miałaś dobry, ale zazwyczaj używa się angielskich nazw zmiennych i w javascripcie jest taka konwencja, żeby zmienne, funkcje, metody nazywać w taki sposób addField
, czyli najpierw małe litery i kolejny wyraz z dużej. Bez żadnych dziwnych kresek add_field
w środku nazwy.
Kopiuj
const dynamicFields = document.getElementById('dynamic-inputs');
const addFieldButton = document.getElementById('dodaj_pole');
addFieldButton.addEventListener('click', addField);
function addField(){
dynamicFields.innerHTML += '<div><input type="number"></div>';
const div = document.createElement('div');
const input = document.createElement('input');
input.type = "number";
div.appendChild(input);
dynamicFields.appendChild(div);
}
Tylko żeby to wszystko nam zadziałało to musimy zrobić jeszcze jedną rzecz. Standardowo jak wysyłamy formularz <form></form>
to dana podstrona się odświeża, kasując wszystkie zmiany jakie zostały zrobione.
W javascripcie możemy to wyłączyć nadpisując event submit
Kopiuj
const form = document.getElementById('oblicz');
form.addEventListener('submit', sendForm);
function sendForm(event) {
event.preventDefault();
}
Tutaj na dole masz cały kod
Kopiuj
<!DOCTYPE html>
<html lang="pl">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<form id="oblicz" action="" method="post">
<div id="dynamic-inputs">
<div>
<input type="number">
</div>
<div>
<input type="number">
</div>
</div>
<div>
<button id="dodaj_pole">Dodaj pole</button>
<button id="usun_pole">Usuń pole</button>
<button id="wynik">wynik</button>
<button id="reset">Resetuj</button>
</div>
</form>
<script src="sumaIII.js"></script>
</body>
</html>
Kopiuj
const form = document.getElementById('oblicz');
form.addEventListener('submit', sendForm);
function sendForm(event) {
event.preventDefault();
}
const dynamicFields = document.getElementById('dynamic-inputs');
const addFieldButton = document.getElementById('dodaj_pole');
addFieldButton.addEventListener('click', addField);
function addField(){
dynamicFields.innerHTML += '<div><input type="number"></div>';
const div = document.createElement('div');
const input = document.createElement('input');
input.type = "number";
div.appendChild(input);
dynamicFields.appendChild(div);
}
Methods
na samym dole to masz pełną listę dostępnych opcji. Jeśli nie masz jeszcze stworzonej struktury formularza w html / css to zacznij może od tego?