Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone
 

Registered : 109,037

HOME > PHP > PHP Forum > ช่วยดูโค้ดการบวก Sumtotal ให้หน่อยค่ะ มันขึ้นแต่ 0 กับ NaN นั่งงมมาหลายวันแล้ว



 

ช่วยดูโค้ดการบวก Sumtotal ให้หน่อยค่ะ มันขึ้นแต่ 0 กับ NaN นั่งงมมาหลายวันแล้ว

 



Topic : 136425



โพสกระทู้ ( 48 )
บทความ ( 0 )



สถานะออฟไลน์
Twitter



อยากได้ผลบวกของช่องจำนวนเงิน ค่ะ

เป็น autofill ดึงมาแสดง อยากได้ผลบวกของช่อง จำนวนเงินค่ะ มาแสดงตรงช่อง ยอดชำระตามใบส่งสินค้าค่ะ

Code
<td><input type='text' name='saletotal[]' id='saletotal_1' class='items form-control' readonly></td>




Code (JavaScript)
var elems = document.getElementsByClassName('items');

var myLength = elems.length,
totalsale = 0;

for (var i = 0; i < myLength; ++i) {
  totalsale += elems[i].value;
}

document.getElementById('totalsale').value = totalsale;	


มันออกมาเป็น 0 ค่ะอันนี้

Code (JavaScript)
function getItems()
 {
 var items = new Array();
 var itemCount = document.getElementsByClassName("items");
 var totalsale = 0;
     var id= '';
 for(var i = 0; i < itemCount.length; i++)
 {
     id = "saletotal_"+(i+1);
     
	 totalsale = totalsale +  parseInt(document.getElementById(id).value);
 }
document.getElementById('paymentreceipt').value = totalsale;
 return totalsale;

 }
 getItems();

อันนี้ มันออกเป็น NaN ค่ะ



Tag : PHP, MySQL, JavaScript, jQuery







Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2021-10-15 10:03:33 By : aobjung View : 641 Reply : 10
 

 

No. 1



โพสกระทู้ ( 4,756 )
บทความ ( 8 )



สถานะออฟไลน์


ตรวจซะก่อนนะครับว่า document.getElementById(id).value มีค่ามามั้ย บางทีไม่ได้กรอกงี้
แล้วก็เอา isNaN() มาใช้ตรวจ

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/isNaN
https://www.w3schools.com/jsref/jsref_isnan.asp

แต่ก็ดูตัวอย่างในลิ้งค์ด้วย เพราะ isNaN() มันทึกทักเอาหลายค่าที่ไม่ใช่ตัวเลขจริงๆไปเป็นตัวเลข เช่น isNaN(true) isNaN(false) จะเป็น false คือมันทึกทักว่าเป็นตัวเลข

หรือดู https://stackoverflow.com/a/175787/128761


แต่ว่าโค้ดมันไม่มีตรงไหนเป็น php เลยทำไมขยันลงกันผิดห้องจัง ห้อง script มีไว้ทำไมกัน?








ประวัติการแก้ไข
2021-10-15 12:39:20
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2021-10-15 12:38:15 By : mr.v
 


 

No. 2



โพสกระทู้ ( 48 )
บทความ ( 0 )



สถานะออฟไลน์


ให้เป็นแนวทางครับ ผมเขียนแบบนี้ใช้ได้ครับ

<script language="JavaScript">
function fncSums25()
{
var t1 = document.getElementsByName('textbox1');
var t2 = document.getElementsByName('textbox2');
var tot=0;
for(var i=0;i<enow.length;i++){
if(parseFloat(t1[i].value))
tot += parseFloat(t1[i].value)+parseFloat(t2[i].value);
}
var total=tot;
document.getElementById('textboxsum').value = Math.round(total);
}

document.addEventListener("DOMContentLoaded", function(event) {
fncSums25();
});
</script>
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2021-10-15 15:54:17 By : comsc006
 

 

No. 3



โพสกระทู้ ( 9,587 )
บทความ ( 2 )



สถานะออฟไลน์


Code (JavaScript)
let elems = document.getElementsByClassName('items');
let myLength = elems.length,
let totalsale = 0;
for (var i = 0; i < myLength; ++i) {
  totalsale += elems[i].value-0; //  elems[i].value-0 ทำ string ให้เป็นตัวเลข แบบสั้นๆ ขีเกียจ parse
}
document.getElementById('totalsale').value = totalsale;


Code (JavaScript)
function getType(x) {
	let stringConstructor = "test".constructor;
	let arrayConstructor = [].constructor;
	let objectConstructor = ({}).constructor;
	if (x === null) {return "null";}
	if (x === undefined) {return "undefined";}
	if (x.constructor === stringConstructor) {return "String";}
	if (x.constructor === arrayConstructor) {return "Array";}
	if (x.constructor === objectConstructor) {return "Object";}
	return "don't know";
}
function getItems(){
  let items = new Array();
  let itemCount = document.getElementsByClassName("items");
  let totalsale = 0;
  for(var i = 0; i < itemCount.length; i++){
    let id = `saletotal_${itemCount[i].id}`;
    let v = document.getElementById(id).value
    if(getType(v)==='String'){
      totalsale += v-0;
    }
  }
  document.getElementById('paymentreceipt').value = totalsale;
  return totalsale;
}
getItems();

ลองดูหลายๆ แบบ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2021-10-15 17:17:49 By : Chaidhanan
 


 

No. 4



โพสกระทู้ ( 48 )
บทความ ( 0 )



สถานะออฟไลน์
Twitter

ขอบคุณทุกคนสำหรับคำแนะนำค่ะ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2021-10-15 22:01:19 By : aobjung
 


 
2021 แล้ว, เลิกเขียน jQuery เถอะ
DOM, ECMA, etc, ...

Code (PHP)
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>DOM->Sum with loop->element</title>
<style>
td, td > input[type="text"]{text-align:center;height:30px;line-height:30px;}
td > input[type="text"]{border:1px solid #ddd;}
input:read-only {background-color: #ddd;}
</style>
</head>
<body>
<form id="test">
<table id="table">
<thead>
<tr>
	<td>No</td>
	<td>ID</td>
	<td>Number</td>
</tr>
</thead>
<tbody>
<tr>
	<td>1</td>
	<td><input type="text" name="id[]" value="1"></td>
	<td><input type="text" name="amt[]" class="items" value="10"></td>
</tr>
<tr>
	<td>2</td>
	<td><input type="text" name="id[]" value="2"></td>
	<td><input type="text" name="amt[]" class="items" value="20"></td>
</tr>
<tr>
	<td>&nbsp;</td>
	<td><input type="text" name="count" id="num-rows" readonly></td>
	<td><input type="text" name="total" id="total" readonly></td>
</tr>
<tr>
	<td>&nbsp;</td>
	<td>&nbsp;</td>
	<td><button type="button" id="calculate">Calculate</button></td>
</tr>
</tbody>
</table>
</form>
<script>
(function() {
	var items = document.querySelectorAll(".items");

	const total = () => {
		let total = 0;
		let numRows = 0;

		for (let element of items) {
			numRows++;
			total += Number(element.value);
		}
		document.getElementById("num-rows").value = numRows;
		document.getElementById("total").value = total;
	}

	document.getElementById("calculate").addEventListener("click", function() {
		total();
	});

	items.forEach(el => el.addEventListener('keyup', event => {
		total();
	}));

}());
</script>
</body>
</html>

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2021-10-18 09:19:39 By : Guest
 


 
short hand:
+number //convert to number
Code (JavaScript)
for (let element of items) {
	numRows++;
	total += +element.value;
}

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2021-10-18 10:08:22 By : Guest
 


 
map + reduce
Code (JavaScript)
var items = document.querySelectorAll(".items");

const total = () => {
	document.getElementById("total").value = [...document.querySelectorAll(".items")].map(item => +item.value).reduce((sum, number) => {
		return sum + number;
	}, 0);
}

document.getElementById("calculate").addEventListener("click", function() {
	total();
});

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2021-10-18 12:37:58 By : Guest
 


 
ตอบความคิดเห็นที่ : 7 เขียนโดย : Guest เมื่อวันที่ 2021-10-18 12:37:58
รายละเอียดของการตอบ ::
Code (JavaScript)
var items = document.querySelectorAll(".items");

const total = () => {
	document.getElementById("total").value = [...items].map(item => +item.value).reduce((sum, number) => {
		return sum + number;
	}, 0);
}


แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2021-10-18 12:40:08 By : Guest
 


 
ตอบความคิดเห็นที่ : 8 เขียนโดย : Guest เมื่อวันที่ 2021-10-18 12:40:08
ลืมไปว่าบรรทัดเดียว return ค่าออกไปได้เลย
รายละเอียดของการตอบ ::
Code (JavaScript)
const total = () => {
	document.getElementById("total").value = [...items].map(item => +item.value).reduce((sum, number) => sum + number, 0);
}


แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2021-10-18 12:47:30 By : Guest
 


 

No. 10



โพสกระทู้ ( 9,587 )
บทความ ( 2 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 6 เขียนโดย : Guest เมื่อวันที่ 2021-10-18 10:08:22
รายละเอียดของการตอบ ::
ขอบคุณคำสั่งนี้ +'alpha_num';


ไอ้เราก็ alpha_num - 0 ตลอด
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2021-10-18 15:47:22 By : Chaidhanan
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : ช่วยดูโค้ดการบวก Sumtotal ให้หน่อยค่ะ มันขึ้นแต่ 0 กับ NaN นั่งงมมาหลายวันแล้ว
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ FTP| ใส่แถวของตาราง ใส่คอลัมน์ตาราง| ตัวยก ตัวห้อย ตัวพิมพ์ดีด| ใส่โค้ด ใส่การอ้างถึงคำพูด| ใส่ลีสต์
smiley for :lol: smiley for :ken: smiley for :D smiley for :) smiley for ;) smiley for :eek: smiley for :geek: smiley for :roll: smiley for :erm: smiley for :cool: smiley for :blank: smiley for :idea: smiley for :ehh: smiley for :aargh: smiley for :evil:
Insert PHP Code
Insert ASP Code
Insert VB.NET Code Insert C#.NET Code Insert JavaScript Code Insert C#.NET Code
Insert Java Code
Insert Android Code
Insert Objective-C Code
Insert XML Code
Insert SQL Code
Insert Code
เพื่อความเรียบร้อยของข้อความ ควรจัดรูปแบบให้พอดีกับขนาดของหน้าจอ เพื่อง่ายต่อการอ่านและสบายตา และตรวจสอบภาษาไทยให้ถูกต้อง

อัพโหลดแทรกรูปภาพ

Notice

เพื่อความปลอดภัยของเว็บบอร์ด ไม่อนุญาติให้แทรก แท็ก [img]....[/img] โดยการอัพโหลดไฟล์รูปจากที่อื่น เช่นเว็บไซต์ ฟรีอัพโหลดต่าง ๆ
อัพโหลดแทรกรูปภาพ ให้ใช้บริการอัพโหลดไฟล์ของไทยครีเอท และตัดรูปภาพให้พอดีกับสกรีน เพื่อความโหลดเร็วและไฟล์ไม่ถูกลบทิ้ง

   
  เพื่อความปลอดภัยและการตรวจสอบ กระทู้ที่แทรกไฟล์อัพโหลดไฟล์จากที่อื่น อาจจะถูกลบทิ้ง
 
โดย
อีเมล์
บวกค่าให้ถูก
<= ตัวเลขฮินดูอารบิก เช่น 123 (หรือล็อกอินเข้าระบบสมาชิกเพื่อไม่ต้องกรอก)







Exchange: นำเข้าสินค้าจากจีน, Taobao, เฟอร์นิเจอร์, ของพรีเมี่ยม, ร่ม, ปากกา, power bank, แฟลชไดร์ฟ, กระบอกน้ำ

Load balance : Server 01
ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2024 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
[Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 อัตราราคา คลิกที่นี่