klicken Ich habe eine Tabelle, die automatisch 2 Berechnungen macht:Berechnen Feldeingabe nach Zeile hinzugefügt, wenn die Taste
- Berechnung der Anzahl der Tage nach der Auswahl gekommenen und gegangenen Datum von zwei Eingangsdatumsfeld mit Kalender, Ergebnis ist gespeichert ist Feld (nbjours)
- Multiplikation von 3 Feldern (nbcheveaux * Tage * Preis), Ergebnis wird gespeichert ind Feld (gesamt) Es gibt eine Schaltfläche, die, wenn wir darauf klicken, eine neue Zeile hinzugefügt wird. Wie kann ich dieselben automatischen Berechnungen in den nach dem Klick hinzugefügten Nachrichtenzeilen reproduzieren?
1- hinzufügen Meine Reihen funktionieren
window. addRow = function addRow(btn) {
var parentRow = btn.parentNode.parentNode;
var table = parentRow.parentNode;
var tr = document.createElement("tr");
var tdNbC = document.createElement("td");
var tdDateArrive = document.createElement("td");
var tdDateDepart = document.createElement("td");
var tdNbJour = document.createElement("td");
var tdPrix = document.createElement("td");
var tdTotal = document.createElement("td");
var td3 = document.createElement("td");
var inputDateArrive = document.createElement("input");
var inputDateDepart = document.createElement("input");
inputDateArrive.type = "text";
inputDateDepart.type = "text";
inputDateArrive.setAttribute("class", "date");
inputDateDepart.setAttribute("class", "date1");
var inputNbrC = document.createElement("input");
var inputNbrJour = document.createElement("input");
var inputPrix = document.createElement("input");
var inputTotal = document.createElement("input");
var inputButton = document.createElement("button");
inputButton.type = "button";
inputButton.innerHTML = "+";
inputButton.onclick = function(){
addRow(this);
};
tdNbC.appendChild(inputNbrC);
tdDateArrive.appendChild(inputDateArrive);
tdDateDepart.appendChild(inputDateDepart);
tdNbJour.appendChild(inputNbrJour);
tdPrix.appendChild(inputPrix);
tdTotal.appendChild(inputTotal);
td3.appendChild(inputButton);
tr.appendChild(tdNbC);
tr.appendChild(tdDateArrive);
tr.appendChild(tdDateDepart);
tr.appendChild(tdNbJour);
tr.appendChild(tdPrix);
tr.appendChild(tdTotal);
tr.appendChild(td3);
table.appendChild(tr);
$(inputDateDepart).mask("99/99/9999");
$(inputDateArrive).mask("99/99/9999");
}
2- Funktion, die Anzahl der Tage berechnen
$(document).ready(function() {
$('.date1').change(function() {
var start = $('.date').datepicker('getDate');
var end = $('.date1').datepicker('getDate');
if (start<end) {
var days = (end - start)/1000/60/60/24;
$('.days').val(days);
}
else {
alert ("Depated date must be greater that arrived date!");
$('.date').val("");
$('.date1').val("");
$('.days').val("");
}
}); //end change function
}); //end ready
3- Funktion, die die Multiplikation arbeiten
$('.nbrcevaux,.days,.price').keyup(function() {
var nbrcevaux = parseInt($('.nbrcevaux').val());
var days = parseInt($('.days').val());
var prix = parseInt($('.price').val());
$('.total').val(nbrcevaux * days * prix);
});
4- HTML Tabelle
Wie kann ich die Funktionen integrieren, um die Anzahl der Tage und die Multiplikation in der hinzugefügten neuen Zeile zu berechnen, die nach dem Klick angezeigt wird?
Erstens ist der Code von Anfang an falsch und nicht einmal laufen würde. Sie beginnen mit 'Fenster. addRow', anstelle von 'window.addRow' und ehrlich gesagt ist das sehr schlechte Praxis (Hinzufügen einer neuen globalen Funktion) an erster Stelle. Sie erstellen jedoch neue "td" -Elemente und konfigurieren sie. Sie füllen sie einfach nicht mit irgendwelchen Daten. Tun Sie das mit 'element.textContent = newContent' wenn der Inhalt nicht HTML ist oder' element.innerHTML = newContent' wenn der Inhalt ist. –
Vielen Dank für Ihre Anmerkungen, aber meine Codes funktionieren einwandfrei. –
Bitte machen Sie sich keine Sorgen über die Anzahl der Codes in Zeile Funktion hinzufügen. Ich würde gerne die Berechnungsfunktionen in die Funktion add row integrieren, so dass die neuen Zeilen, die nach dem Klick hinzugefügt wurden, als erste Zeile ... –