มินิโปรเจกต์: โปรแกรมบวกเลข
ตัวอย่าง:
ลองเล่นกับตัวอย่างข้างบนดู
- ใส่เลข 10 ในกล่องข้อความที่ 1
- ใส่เลข 20 ในกล่องข้อความที่ 2
- กดปุ่ม “=”
- กล่องข้อความที่ 3 จะแสดงผลลัพธ์เป็น 30
ขึ้นหน้าเว็บ
สร้างหน้าเว็บที่มีกล่องข้อความ 3 กล่อง และปุ่ม 1 ปุ่ม
html<h1>Adder</h1> <input type="text" size="8" id="a"> + <input type="text" size="8" id="b"> <input type="button" value="=" id="calculate"> <input type="text" size="8" readonly id="c"> <script> let calculate = document.getElementById('calculate') let a = document.getElementById('a') let b = document.getElementById('b') let c = document.getElementById('c') </script>
แนะนำ attribute
size="…"
ของ<input type="text">
กล่องข้อความ
<input type="text">
ขนาดมาตรฐาน อาจจะยาวไปหน่อย เราสามารถกำหนดขนาดของกล่องข้อความด้วย attributesize="…"
ตัวอย่างเช่น<input size="5">
จะทำให้กล่องข้อความมีขนาดสำหรับข้อความ 5 ตัวอักษรแนะนำ attribute
readonly
ของ<input type="text">
สำหรับกล่องข้อความอันสุดท้าย สามารถใส่ attribute
readonly=""
ได้ เพื่อทำให้กล่องข้อความนั้นไม่สามารถแก้ไขได้ ตัวอย่างเช่น<input readonly="">
(สามารถย่อเป็น<input readonly>
ได้)ตรวจสอบผลลัพธ์
- เปิดเว็บที่สร้างขึ้นมา หรือ คลิกที่นี่เพื่อเปิดหน้าตัวอย่าง
- เปิด JavaScript Console ขึ้นมา
- พิมพ์
a
แล้วกด Enter → คอนโซลควรจะแสดงตัวอินพุตที่มีid="a"
- พิมพ์
b
แล้วกด Enter → คอนโซลควรจะแสดงตัวอินพุตที่มีid="b"
- พิมพ์
c
แล้วกด Enter → คอนโซลควรจะแสดงตัวอินพุตที่มีid="c"
- พิมพ์
calculate
แล้วกด Enter → คอนโซลควรจะแสดงตัวปุ่มที่มีid="calculate"
ทำให้ปุ่มทำงาน
ต่อไป เราจะทำให้เมื่อกดปุ่ม ให้นำเลขที่อยู่ในกล่องข้อความที่ 1 และ 2 มาบวกกัน แล้วเอาผลลัพธ์ไปใส่ในกล่องข้อความที่ 3
เวลาเขียนโค้ด เราจะพยายามแก้ปัญหาทีละส่วน
เริ่มจากการทำให้ปุ่มสามารถคลิกได้ก่อน…
html<script> let calculate = document.getElementById('calculate') let a = document.getElementById('a') let b = document.getElementById('b') let c = document.getElementById('c') calculate.onclick = () => { alert('ok') } </script>
ตรวจสอบผลลัพธ์
- เปิดเว็บที่สร้างขึ้นมา
- คลิกที่ปุ่ม “=”
- ควรจะมีกล่องป๊อปอัพโผล่ขึ้นมา แสดงคำว่า “ok”
ลองสั่งให้คอมพิวเตอร์คำนวณผลลัพธ์ใน console ดู
ต่อไป เราจะต้องเขียนโค้ดข้างในตัว
calculate.onclick
แต่ก่อนอื่น เราจะมาลองคำสั่งผ่าน JavaScript Console กันดูเปิดหน้าเว็บที่สร้างขึ้นมา (หรือ คลิกที่นี่เพื่อเปิดหน้าตัวอย่าง)
ใส่เลข 10 ในกล่องข้อความที่ 1
ใส่เลข 20 ในกล่องข้อความที่ 2
เปิด JavaScript Console ขึ้นมา
ดึงข้อมูลออกมาจากกล่องข้อความแรก
a.value
"10"
ดึงข้อมูลออกมาจากกล่องข้อความที่สอง
b.value
"20"
เอาค่าที่ได้มาบวกกัน
a.value + b.value
"1020"
ทำไมถึงไม่ได้เลข 30 แต่กลับได้เลข 1020 ออกมาแทน?
นั่นก็เพราะว่า เวลาดึงข้อมูลจากกล่องข้อความ เราจะได้ข้อมูลออกมาเป็น string เสมอ ทำให้เมื่อเอามา
+
กัน จึงเป็นการนำสตริงมาต่อกันแทนที่จะเป็นการบวกเลขถ้าอยากให้เป็นการบวกเลข เราต้องแปลงข้อมูลทั้งสองฝั่งของเครื่องหมาย
+
ให้กลายเป็นตัวเลขทั้งคู่จากที่เราเรียนรู้กันไปก่อนหน้าในหัวข้อ “การแปลงชนิดข้อมูล” การเอาค่าสองค่ามาคูณกัน คอมพิวเตอร์จะนำค่าทั้งสองฝั่งของเครื่องหมาย
*
มาแปลงเป็นข้อมูลชนิด number โดยอัตโนมัติ ก่อนทำการคูณa.value * 1
10
ลองบวกเลขใหม่อีกครั้ง โดยครั้งนี้เราจะแปลงสตริงเป็นตัวเลขด้วย
(a.value * 1) + (b.value * 1)
30
เนื่องจากการคูณทำงานก่อนการบวกอยู่แล้ว จึงไม่จำเป็นต้องใส่วงเล็บ
a.value * 1 + b.value * 1
30
นำคำตอบที่ได้เก็บใส่ตัวแปร
let answer = a.value * 1 + b.value * 1
undefined
ตรวจสอบค่าตัวแปร
answer
answer
30
นำคำตอบที่ได้ไปใส่ในกล่องข้อความที่ 3
c.value = answer
30
ตรวจสอบผลลัพธ์
เมื่อทำตามขั้นตอนข้างต้นเสร็จแล้ว กล่องข้อความที่ 3 ควรจะแสดงผลลัพธ์เป็น 30
รวบรวมโค้ดที่เราพิมพ์ไว้ และนี่คือโค้ดที่เราจะเอาไปใส่ใน
calculate.onclick
jslet answer = a.value * 1 + b.value * 1 c.value = answer
การแปลงสตริงเป็นตัวเลขด้วยการเอามาคูณด้วย 1 ไม่ใช่วิธีที่ดีนัก…
เพราะว่าเป็นการแปลงชนิดข้อมูลโดยทางอ้อม แต่สำหรับตอนนี้ เราจะใช้วิธีนี้กันไปก่อน เป็นการแก้ปัญหาด้วยความรู้เท่าที่มีตอนนี้ สำหรับตอนนี้แต่ในบทต่อไปเราจะมาเรียนเรียนรู้วิธีที่ดีกว่านี้อีกที
ใส่โค้ดให้ปุ่มกด
นำโค้ดก่อนหน้า มาใส่ใน
calculate.onclick
html<script> let calculate = document.getElementById('calculate') let a = document.getElementById('a') let b = document.getElementById('b') let c = document.getElementById('c') calculate.onclick = () => { let answer = a.value * 1 + b.value * 1 c.value = answer } </script>
ตรวจสอบผลลัพธ์
- เปิดหน้าเว็บที่สร้างขึ้นมา
- ใส่เลข 10 ในกล่องข้อความที่ 1
- ใส่เลข 20 ในกล่องข้อความที่ 2
- กดปุ่ม “=”
- กล่องข้อความที่ 3 จะแสดงผลลัพธ์เป็น 30