คือจะคำนวณค่าหาผลรวมของแต่ละ item คูณด้วย ราคาอ่ะค่ะ แล้วมันต้องวนรอบแสดงข้อมูลทั้งหมดออกมาก้อเลยต้องส่งค่า no มาเพื่อจะได้ดูว่ามันอยู่ที่ลำดับเท่าไหร่ แต่พอจะให้มันแสดงค่าที่คำนวณได้มันกลับฟ้องว่า document.form1.x undefine เราจะทำยังงัยค่ะให้เอาค่า no มาต่อสตริงให้มันเห็นว่าเป็นชื่อเดียวกันค่ะ
<script language="javascript" type="text/javascript">
function TotalUnit(qty,price,no) {
var x="total_unit"+no
total= qty * price
document.form1.x.value=total
}
</script>
ไม่ทราบว่า item ที่ชื่อ x เป็น input ชนิดอะไรใน form ที่ชื่อ form1 หรือครับ ถ้าส่วนแสดงผลนี้ไม่ใช่ input item จะไม่สามารถอ้างอิงจาก form name ได้ครับ ส่วนที่อ้างอิงจาก form name ได้นั้นต้องเป็น input item เท่านั้นครับ เช่น <input, <select, <textarea ครับ
ส่วนถ้าส่วนที่ใช้แสดงผลเป็น <span>, <div> ลองดูตัวอย่างของคุณไก่ย่าง ได้ที่ ให้มันโชว์ข้อความเมื่อคลิ๊กที่รูป
ซึ่งผมได้อธิบายการทำงานของ javascript พร้อมตัวอย่างให้ดูแล้วด้วยครับ
Sat 5 Nov 2005 11:21:28
เป็น input ประเภท textbox แบบ readonly ค่ะ พอมันคำนวณได้ก็จะแสดงผลรวมออกมาโดยอัตโนมัติ
ลองทำเป็นแบบของคุณไก่ย่างแล้ว
function Unit(qty,price,no){
total=qty*price
if(document.all){
eval("document.all."+no+".innerHTML='"+total+"'")
}else{
eval("document.getElementById(\""+no+\"").innerHTML="'"+total+"'")
}
}
โดยเมื่อคีย์ตัวเลขลงไปจะคำนวณค่าให้
<input name="quantity<?=$i?>" type="text" class="textbox" id="quantity<?=$i?>" value="1" size="3" onKeyup="Unit(this.value,<?=$result[5]?>,<?=$i?>
">
ช่วยดูให้อีกทีนะค่ะ
ที่ต้องการทำมันประมาณเนี้ยอ่ะค่ะ แต่มันไม่ออกอ่ะค่ะ
<html>
<head>
<script language="javascript">
function display_name(obj,txt){
if(document.all){
eval("document.all."+obj+".innerHTML='"+txt+"'");
}else{
eval("document.getElementById(\"+obj+\").innerHTML='"+txt+"'");
}
}
</script>
</head>
<body>
<? for($i=0;$i<5;$i++){ ?>
<span id="<?=$i?>"></span><br>
<input type="text" onKeyup="display_name('<?=$i?>',this.value)">
<? } ?>
</body>
</html>
document.all.0.innerHTML='ตัวเลข'
...
document.all.4.innerHTML='ตัวเลข'
ปัญหาคือ IE ไม่รองรับการตั้งชื่อ obj ที่ขึ้นต้นด้วยตัวเลยขได้ครับ
ส่วนในโค๊ดส่วนของ DOM นั้นคุณใส่ \ นำหน้า " (Double quote) นั้นจะทำให้คำสั่ง eval แปรออกมาเป็น
document.getElementById("+obj+").innerHTML='ข้อความ'
ซึ่ง browser จะไม่สามารถหา object ในชื่อดังกล่าวได้ครับ
ลองใช้โค๊ดนี้ดูครับ
<html>
<head>
<script language="javascript">
function display_name(obj,txt){
if(document.all){
eval("document.all."+obj+".innerHTML='"+txt+"'");
}else{
eval("document.getElementById('"+obj+"').innerHTML='"+txt+"'");
}
}
</script>
</head>
<body>
<? for($i=0;$i<5;$i++){ ?>
<span id="<?="st".$i?>"></span><br>
<input type="text" onKeyup="display_name('<?="st".$i?>',this.value)">
<? } ?>
</body>
</html>
Tue 8 Nov 2005 14:46:08
ได้แล้วค่ะแต่ว่าตอนนี้มันมีปัญหาใหม่มาอีกแล้ว คืออยากจะถามว่าการทำเว็บไซต์เนี่ยเค้าจะเก็บค่าเอาไว้ใน temp แล้วค่อยหาผลรวมออกมาเหมือนการทำโปรแกรมอื่นๆหรือป่าวค่ะ แล้วถ้ามีเค้าต้องทำกันประมาณไหนเหรอค่ะช่วยบอกเด็กคนนี้ทีนะค่ะ
เข้าใจว่าคุณกำลังต้องการทำ shopping cart หรือเปล่าครับ ถ้าใช่
โดยปกติแล้ววิธีที่ง่ายที่สุดของ php shopping cart ก็เก็บไว้ใน session ครับเมื่อต้องการคำนวนก็เรียกออกมาคำนวนครับ
แต่วิธีที่เสถียรกว่าคือเก็บข้อมูลนั้นๆไว้ใน database ครับ โดยต้องออกแบบ database เพื่อการเก็บข้อมูลเหล่านี้ไว้ด้วยครับว่าต้องการเก็บแบบไหน การเรียกออกมาคำนวนจะทำได้ง่ายและเร็วที่สุดครับ
ถ้าไม่ใช่ shopping cart ต้องขอโทษด้วยครับ การเก็บค่าไว้ ก็มีอีกส่วนคือ cookie ครับแต่ไม่แนะนำให้ใช้ cookie กับระบบที่เกี่ยวกับการเงินนะครับ เพราะว่า user สามารถแก้ไขได้ตามต้องการครับ
Wed 9 Nov 2005 08:45:06
ถ้างั้นช่วยหน่อยนะค่ะ ตอนนี้กำลังทำ shopping cart อยู่ ในหน้า order list มันจะมีช่อง input เอาไว้ให้ลูกค้ากรอกจำนวนที่ต้องการ เมื่อกรอกเสร็จก็จะมีการไปดึงฟังก์ชันในการรวมค่าออกมาดังนี้
function TotalUnit(qty,price,no){
total=qty*price
if(document.all){
eval("document.all."+no+".innerHTML='"+total+"'")
}else{
eval("document.getElementById(\"+no+\").innerHTML='"+total+"'")
}
}
ค่าที่รวมได้ก็จะแสดงในส่วนของ span id ที่กำหนด แล้วเราต้องการนำค่าที่แสดงอยู่ใน span id ที่กำหนดเอาไว้มาหาผลรวมอีกทีนึงเราจะอ้างอิงถึงได้อย่างได้เหรอค่ะ ช่วยหน่อยนะค่ะ
<head>
<script language="javascript">
var total;
function subtotal(obj,qty,price){
sub_total=qty*price
if(document.all){
eval("document.all."+obj+".innerHTML='"+sub_total+"'");
}else{
eval("document.getElementById('"+obj+"').innerHTML='"+sub_total+"'");
}
total += sub_total;
}
function display_total(){
if(document.all){
document.all.total_price.innerHTML = total;
}else{
document.getElementById("total_price").innerHTML = total;
}
}
</script>
</head>
<body>
<input type="text" name="item1" onkeyup="subtotal('sub_item1',this.value,20)"><span id="sub_item1"></span>
<input type="text" name="item2" onkeyup="subtotal('sub_item2',this.value,20)"><span id="sub_item2"></span>
<input type="text" name="item1" onkeyup="subtotal('sub_item3',this.value,20)"><span id="sub_item3"></span>
<span id="total_price"></span>
</body>
</html>
Wed 9 Nov 2005 14:29:30
ทำไมผลรวมของ total ถึงไม่โชว์อ่ะ
<script language="javascript">
var total;
function subtotal(obj,qty,price){
sub_total=qty*price
if(document.all){
eval("document.all."+obj+".innerHTML='"+sub_total+"'");
}else{
eval("document.getElementById('"+obj+"').innerHTML='"+sub_total+"'");
}
total += sub_total;
display_total();
}
function display_total(){
if(document.all){
document.all.total_price.innerHTML = total;
}else{
document.getElementById("total_price").innerHTML = total;
}
}
</script>

















