Menjumlahkan otomatis pada array dengan javascript

Saya ingin menjumlahkan beberapa nilai yang dilooping contohnya Nilai 1 : 3 Nilai 2 : 10 Nilai 3 : 12 Jumlah : 25

dan jumlah itu keluar secara otomatis ketika nilai 1, 2 , dan 3 diinput atau bahkan jika hanya salah satu yang diinput maka jumlah nya akan keluar otomatis tanpa menggunakan tombol. saya sudah mencobanya dengan code dibawah ini, tapi hasilnya yang keluar adalah nilai yang dijumlahkan bukan keseluruhan melainkan beberapa index yang ada pada salah satu kolom nilai. mohon pencerahannya, berikut code nya.

<!DOCTYPE html>
<html>
<head>
<title>Uji Coba</title>
</head>
<body>
<form method="GET">
<?php
for ($i=1; $i <=3 ; $i++) {
?>

Nilai Ke <?php echo $i; ?>
<input type="text" id="qty" name="qty" onkeyup="sum()">
<br><br>
<?php
}
?>
Jumlah
<input type="text" name="jumlah" id="jumlah" placeholder="Jumlah">

</form>
<script>
function sum(id) {
var qty = document.getElementById('qty').value;
var result = 0;
for (var i = 0; i < 3 ; i++) {
result += parseFloat(qty[i]);
}

if (!isNaN(result)) {
document.getElementById('jumlah').value = result.toFixed(0);
}if (isNaN(result)) {
document.getElementById('jumlah').value = "";
}
}
</script>
</body>
</html>

avatar quindeir
@quindeir

16 Kontribusi 1 Poin

Diperbarui 5 tahun yang lalu

3 Jawaban:

jangan pakai id, kalau lebih dari satu element gunakan class, jadi nanti cara mengakses nya juga dilloop namakelas[$i] satu per satu di javascript

avatar hilmanski
@hilmanski

2686 Kontribusi 2135 Poin

Dipost 5 tahun yang lalu

Tanggapan

saya masih kurang mengerti kak, boleh kasih contoh class di sebelah mana?

class menggantikan id, attribute HTML

saya sudah coba, hanya saja masih kebingungan di cara penggunaan looping di html nya kenapa masih tidak mau ya? berikut code nya

<pre> &lt;!DOCTYPE html&gt; &lt;html&gt; &lt;head&gt; &lt;title&gt;Uji Coba&lt;/title&gt; &lt;/head&gt; &lt;body&gt;

&lt;form method="GET"&gt; &lt;?php for ($i=1; $i &lt;=3 ; $i++) { ?&gt;

 	Nilai Ke &amp;lt;?php echo $i; ?&amp;gt;
	&amp;lt;input type=&quot;text&quot; id=&quot;p[]&quot; class=&quot;items&quot; name=&quot;qty&quot; value=&quot;0&quot; onkeyup=&quot;getItems()&quot;&amp;gt;
	&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;
		&amp;lt;?php
	}
 ?&amp;gt;

&lt;input type='text' id='tot' value='' /&gt;​ &lt;/form&gt;

&lt;script type="text/javascript"&gt; function getItems() { var items = new Array(); var itemCount = document.getElementsByClassName("items"); var total = 0; var id= document.getElementById("p"); for(var i = 0; i &lt; itemCount.length; i++) { //id = "p"+(i+1); total = total + parseInt(document.getElementById(id[i+1]).value); } if (!isNaN(total)) { document.getElementById('tot').value = total; return total; }if (isNaN(total)) { document.getElementById('tot').value = ""; } } getItems(); &lt;/script&gt; &lt;/body&gt; &lt;/html&gt; </pre>

avatar quindeir
@quindeir

16 Kontribusi 1 Poin

Dipost 5 tahun yang lalu

Tanggapan

cara mengambil nilai di javascript dengan class itemCount document.getElementsByClassName("items")[0]; //nanti loop natik jadi [1] [2] dst. kamu bisa belajar javascript termasuk DOM dan contoh penggunannya disini https://sekolahkoding.com/track/belajar-javascript

Jawaban Terpilih

Terimakasih sudah mau membantu kang @hilmanrdn , saya sudah menemukan solusinya . codenya dibawah ini.

<pre> &lt;!DOCTYPE html&gt; &lt;html&gt; &lt;head&gt; &lt;title&gt;Uji Coba&lt;/title&gt; &lt;/head&gt; &lt;body&gt; &lt;form method="POST"&gt; &lt;?php include("../config/koneksi.php"); for($i = 1; $i &lt;= 3; $i++){ ?&gt; Nilai Ke &lt;?php echo $i; ?&gt; &lt;input type="text" id="p&lt;?php echo $i ?&gt;" class="form-control" name="qty" value="0" onkeyup="getItems()"&gt; &lt;br&gt;&lt;br&gt; &lt;?php } ?&gt; Total dari ke &lt;?php echo $i-1 ; ?&gt; Nilai &lt;input type='text' id='tot' value='' /&gt;​ &lt;/form&gt;

&lt;script type="text/javascript"&gt; function getItems() { var items = new Array(); var itemCount = document.getElementsByClassName("form-control"); var total = 0; var id= ""; for(var i = 0; i &lt; itemCount.length; i++) { id = "p"+(i+1); total = total + parseInt(document.getElementById(id).value); } if (!isNaN(total)) { document.getElementById('tot').value = total; return total; }if (isNaN(total)) { document.getElementById('tot').value = ""; } } getItems(); &lt;/script&gt; &lt;/body&gt; &lt;/html&gt; </pre>

avatar quindeir
@quindeir

16 Kontribusi 1 Poin

Dipost 5 tahun yang lalu

Tanggapan

siap silahkan ditandai sebagai jawaban yang benar. Kamu bisa bikin lebih simple dengan menggunakan class dan array seperti catatan saya di atas. jadi ngeloopnya nanti index classnya aja, namaClass[0] namaClass[1] dst..

baik kak terimakasih

gabisa liat fullcode ya ini? kaya ke encrypt gitu

Login untuk ikut Jawaban