[อัพเดต]
เจอปัญหาแล้วครับ หลังจากเตรียมไฟล์เพื่อจะอัพโหลดให้ช่วยดู ผมเข้าใจปัญหาถูก ที่ว่ามันอยู่ตรงตำแหน่งการวาง tag script แต่เข้าใจไม่ถูกจุด
สิ่งที่ได้รู้คือ ถ้าวาง
<script src="script.js"></script>
ก่อน
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
มันจะไม่ทำงาน คงจำไปอีกนาน คิดเอาเองว่ามันเป็น javascript มันก็คงจะเหมือนๆ กัน
ถ้าจะใช้ jquery ต้องแนบไฟล์ jquery.min.js ไปด้วยเสมอใช่ไหมครับ
[ข้อความเดิม]
ณ ที่ตรงนี้คือมือใหม่หัดเล่น
index.html
<html>
<header>
<script src="script.js"></script>
</header>
<body>
</body>
</html>
เคยจำได้ว่า ให้วางไว้ในส่วน Header
ณ ตอนนี้ ถ้าทำแบบนั้น script จะไม่ทำงานเลยครับ เหมือนมันไม่โหลด แต่พอเอามาวางไว้ในส่วนของ body กลับทำงานเป็นปรกติ
แต่ถ้าเป็น code เพียวๆ นำมาวาง header ก็ยังทำงานได้อยู่ หรือว่ามันจะเกี่ยวกับตัวนี้
$(document).ready(function(){
});
ลอง Google แล้วครับ แต่ก็ยังไม่เข้าใจ
ขอดูตัวเนื้อหาด้วยได้มั้ยครับ?
เอามาจากตรงนี้เลยครับ
index.html ถ้าเป็นตามนี้ Code จะทำงานปรกติครับ แต่พอเอามาวางตรง header มันกลับไม่ทำงาน เหมือนไม่ถูกเรียก
ไฟล์ script.js
คนขี้ลืม | คนบ้าเกม | คนเหงาๆ
เอ ตามลิงก์ที่ให้มาสคริปต์มันก็อยู่ใน header นี่ครับ?
แล้วผมลองย้ายจาก header ลงไปใน body มันก็ยังทำงานได้เหมือนกัน
ทุกอย่างปรกติครับ ปัญหามันอยู่ที่ตำแหน่งการวาง
ลองบน Win 8.1 IE11, Chrome กับ Win10 Edge ปัญหาก็มีตามที่บอกไว้ เอาโค้ดออกจากส่วนของ ready มาวางข้างนอก (ไม่มี ready มาครอบ) ก็ยังไม่ทำงานเหมือนกัน
คนขี้ลืม | คนบ้าเกม | คนเหงาๆ
ไม่แน่ใจว่าแก้ได้หรือยัง แต่ถ้ายังไงขอชุดตัวอย่างแบบที่ได้กับไม่ได้เต็มๆ มาดูกันดีไหมครับ
head กับ header มันคนละ tag กันนะครับ
ตำแหน่งการวาง script ได้วางหลัง jquery รึเปล่าครับ
เกี๋ยวครับ เพราะ $(document).ready(function(){}); จะมองว่าตัว html มันโหลดเสร็จยัง ถ้ายังไม่เสร็จ js จะยังไม่ทำอะไรที่อยู่ข้างในนั้นครับ
เท่าที่ดู ไม่มีอะไรผิดเลยครับควรจะ run ได้เลย
รวมถึง ตัว code ที่โพสมาเป็นตัวอย่างด้วยครับ แต่ที่สังเกตเห็นคือ
ref จาก Google CDN
src=https://ajax.googleapis.com
เครื่องไม่ต่อออก internet อยู่ไม่ทำงานแน่นอน
ถ้าต่อ net อยุ่ browser อาจจะ disable
การ run script อยู่ เพราะ run บนเครื่องโดยตรง ครับ
$("button").click(function(){
$("p").toggle();
});
ถ้าวางไว้ใน header หรือไว้ด้านบน tag button สคริปจะทำงานก่อน DOM (button นั่นแหละ) จะโหลดเสร็จ ทำให้ใช้งานไม่ได้
ส่วนถ้าครอบด้วย $(document).ready(function(){}); จะทำให้สคริปทำงานหลัง DOM โหลดเสร็จ
คือจำไว้นะครับว่า ถ้าจะเราใช้ lib ตัวไหนเราก็ต้องโหลด lib ตัวนั้นก่อน
ในที่นี้คือ jquery ก็ต้องวางไว้ก่อนที่เราจะเรียก script ของเรา
และผมขอแนะนำอย่างนึงเวลาโหลดหน้าเว็บ ถ้า script ของเรามีการจัดการ element ด้วย
ให้นำ script ไปวางไว้ก่อน แบบนี้แทน เพื่อที่จะได้แน่ใจว่า html ทั้งหมดถูกโหลดแล้ว
มันดีกว่าต้องใช้ on ready แน่นอนครับ และปัจจุบันก็แนะนำให้ทำแบบนี้ ตรง head เอาไว้ใส่พวก lib ก็พอ
ปล.มีความรู้สึกเดจาวูอย่างบอกไม่ถูก ไม่ได้ว่า จขกท นะครับ แต่ผมรู้สึกจริงๆ
คงจำได้ขึ้นใจละครับทีนี้ (ถ้าจะให้แก้ตัว คงต้องบอกว่าปรกติจะชินแต่กับ JavaScript เพียวๆ ละครับ ไม่ใช่โปรแกรมเมอร์นะ เวลาแต่ง Blogger มันเจอบ่อยๆ สามารถสุดได้แค่นี้ละครับ ^_^)
หมายถึงวางไว้ก่อนปิดแท็ก body ใช่ไหมครับ
อันนี้ มันยังไงเหรอครับ
คนขี้ลืม | คนบ้าเกม | คนเหงาๆ
ใช่ครับ ก่อนปิด body สงสัยจะโดนตัดแท็กออกตอน submit
ส่วนเรื่องเดจาวู แค่คุ้นๆหน่ะครับ สงสัยช่วงนี้คงนอนน้อย
Hi
SAP HANA Training In Chennai
SAP MM Training In Chennai
Selenium Training In Chennai
Digital Marketing Training In Chennai
Angular js Training In Chennai
AWS Training In Chennai
CCNA Training In Chennai
Dot Net Training In Chennai
Hadoop Training In Chennai
Informatica Training In Chennai
PMP Training In Chennai
Salesforce Admin Training In Chennai
Scrum Master Training In Chennai
SEO Training In Chennai
Tally Training In Chennai
Splunk Training In Chennai
ServiceNow Training In Chennai