Wie kann ich das füllen einer Tabelle die Zelle durch JavaScript-code?
Ich habe eine Tabelle wie unten. Ich habe zum füllen der "Menge" - Feld mit der "Kaufen-Menge" und "Markt-Preis" - Feld. Betrag = Kaufen Menge*Preis. Ich Tue etwas -
<script>
function populate() {
var rows = document.getElementById("mytable").getElementsByTagName("tr");
for ( var i = 1; i <= rows.length; i++) {
cells = rows[i].getElementsByTagName("td");
for ( var j = 0; j <= cells.length; j++) {
if (j == 1) {
var num1 =parseFloat(cells[1].childNodes[0].value);
var num2 =parseFloat(cells[2].childNodes[0].data);
var num3=num1 * num2;
cells[3].childNodes[0].value = num3.toString();
}
}
}
}
</script>
Bekomme ich die Werte für column1 und column2, aber der Wert in der letzten Spalte wird nicht immer aufgefüllt. Die Letzte Zeile scheint nicht zu funktionieren.
cells[3].childNodes[0].value = num3.toString();
Was sollte ich ändern?
Den untenstehenden html-code ist Teil meiner .jsp-Datei.
<form action="BuyServlet">
<table border="1" cellpadding="5" id="mytable">
<tr>
<th>Stock Name</th>
<th>Buy Quantity</th>
<th>Market Price</th>
<th>Amount</th>
</tr>
<tr>
<td>Stock Name</td>
<td><input type="text" name="quantity" onblur="populate()"></td>
<td>122</td>
<td><input type="text" name="amount">
</d>
</tr>
<tr>
<td>Stock Name</td>
<td><input type="text" name="quantity" onblur="populate()"></td>
<td>111</td>
<td><input type="text" name="amount"></td>
</tr>
</table>
</form>
- Sie haben ein paar HTML-gehen mit JavaScript?
- Sind Sie sicher, dass
cells[2].childNodes[0].data
funktioniert? - Können Sie erstellen ein jsFiddle?
- Immer besser, anzeigen-code als ein Bild.
- Es gibt auch keinen Grund, um eine Schleife durch die Zellen!
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dein code ist verbesserungswürdig. In Ihrer Tabelle haben, sollten Sie ein thead und tbody Abschnitte. Das macht es leichter zugänglich und einfacher zu ingore die überschrift.
Nun mit dem code, sollten Sie das hinzufügen des onblur-code nicht hardcoded. Sie Durchlaufen die Zellen sind, gibt es keinen Grund. Auch gibt es keine Notwendigkeit, um eine Schleife jede Zeile, wenn die Tabelle geändert wird. Berechnen Sie einfach die, die sich geändert! Mit childNodes können tückisch sein, weil der whitespace-Unterschiede in den Browsern. Führen Sie den folgenden code nach der Tabelle wiedergegeben wurde.
Den läuft fiddle der obige code
Im Grunde sind Sie immer den Wert aus dem Textfeld (besten Menge) und Sie verwenden die Daten, um den Wert der Marktpreis(besser verwenden innerText)
versuchen, diese (Ersetzen mit deinem code innerhalb der Schleife)
Ich denke, der Fehler ist aufgrund von Fehler Rechtschreibung - Sie haben childnodes statt childNodes auf "Zellen[3].childnodes[0].Wert = num3.toString();"
Check this fiddle - http://jsfiddle.net/VwU7C/