x

บทหลัก

  1. LimeSurvey Cloud เทียบกับ LimeSurvey CE
  2. คู่มือเริ่มต้นใช้งานฉบับย่อ - LimeSurvey 3.0+
  3. การติดตั้ง - LimeSurvey CE
  4. วิธีออกแบบแบบสำรวจที่ดี (คู่มือ)
  5. เริ่มต้นใช้งาน
  6. การดูแลระบบ LimeSurvey
  7. แบบสำรวจ - บทนำ
  8. การตั้งค่าแบบสอบถาม
  9. เมนูสำรวจ
  10. โครงสร้างการสำรวจ
  11. คำถาม - บทนำ
  12. กลุ่มคำถาม - บทนำ
  13. แบบสำรวจ - การจัดการ
  14. ตัวเลือกแถบเครื่องมือแบบสำรวจ
  15. แบบสำรวจหลายภาษา
  16. ExpressionScript Engine - คู่มือเริ่มต้นอย่างรวดเร็ว
  17. ฟีเจอร์ขั้นสูงและฟีเจอร์ที่ไม่ได้จัดหมวดหมู่
  18. คำถามที่พบบ่อยทั่วไป
  19. การแก้ไขปัญหา
  20. วิธีแก้ปัญหาชั่วคราว (Workarounds)
  21. สัญญาอนุญาต
  22. บันทึกการเปลี่ยนแปลงของเวอร์ชัน
  23. ปลั๊กอิน
 Actions

วิธีการใช้งาน ExpressionScript

From LimeSurvey Manual

หน้านี้อาจแปลด้วยเครื่องและอาจมีข้อผิดพลาด ดูต้นฉบับภาษาอังกฤษ · ปรับปรุงคำแปลนี้
This page is a translated version of the page ExpressionScript How-tos and the translation is 100% complete.


ภาพรวมของสิ่งที่อธิบายไปก่อนหน้านี้

หากคุณอ่านตามโครงสร้างของคู่มือ LimeSurvey มาโดยตลอด แสดงว่าคุณคุ้นเคยกับคำศัพท์ของ LimeSurveyแล้ว จากนั้นเราได้อธิบายเกี่ยวกับนิพจน์และตัวแปรเพื่อเรียนรู้วิธีปรับปรุงแบบสำรวจของเรา ในส่วนถัดไป เราได้อธิบายประเภทและความหมายของการไฮไลต์ไวยากรณ์เพื่อเรียนรู้วิธีแก้ไขข้อผิดพลาดทางไวยากรณ์

เมื่อเข้าใจแนวคิดพื้นฐานเหล่านี้แล้ว เราจะไปดูตัวอย่างและคำอธิบายว่านิพจน์ทำงานอย่างไรภายใน LimeSurvey


การไฮไลต์ไวยากรณ์

ภาพหน้าจอต่อไปนี้เป็นตัวอย่าง แต่ไม่ได้แสดงค่าของทูลทิป ทูลทิปคือกล่องข้อมูลที่แสดงขึ้นเมื่อคุณเลื่อนเมาส์ไปวางเหนือคำที่เป็นตัวหนาและมีสี

เนื่องจากมีการไฮไลต์ไวยากรณ์นี้ จึงเขียนนิพจน์ที่ถูกต้องได้ง่ายมาก แม้แต่นิพจน์ที่ซับซ้อน แม้ว่าทีมงาน LimeSurvey วางแผนที่จะพัฒนา Expression Builder GUI แต่คุณสามารถใช้การไฮไลต์ไวยากรณ์ที่มีอยู่เพื่อค้นหาและแก้ไขการพิมพ์ผิดได้อย่างรวดเร็ว นอกจากนี้ คุณยังสามารถใช้ทูลทิปเพื่อตรวจสอบความถูกต้องของนิพจน์ (เช่น ยืนยันว่าคุณเลือกตัวแปรที่ต้องการแล้ว)

ในแต่ละตัวอย่างจะมีสามคอลัมน์:

  1. Source - คือข้อความดิบที่คุณจะป้อนลงในช่องคำถามของ LimeSurvey
  2. Pretty Print - คือข้อความที่คุณป้อนในรูปแบบที่ไฮไลต์ไวยากรณ์แล้ว
    • โปรดทราบว่านิพจน์จะแสดงด้วยพื้นหลังสีแทน แต่ไม่มีเครื่องหมายปีกกาล้อมรอบในการไฮไลต์นี้
    • เนื่องจาก EM รองรับการแทนที่แบบเรียกซ้ำ การแสดงเครื่องหมายปีกกาในการไฮไลต์จะทำให้เกิดข้อผิดพลาดทางไวยากรณ์
  3. Result - คือผลลัพธ์ที่สร้างขึ้นเมื่อ EM ประมวลผลต้นฉบับ
    • ทุกอย่างที่สามารถแทนที่ได้อย่างถูกต้องจะถูกแทนที่
    • นิพจน์ที่มีข้อผิดพลาดจะแสดงในบรรทัดเดียวกันพร้อมการไฮไลต์ไวยากรณ์ ข้อผิดพลาดจะถูกล้อมด้วยกรอบเส้นสีแดง


ไวยากรณ์ที่ถูกต้อง

ด้านล่างนี้เป็นตัวอย่างของไวยากรณ์ที่ถูกต้อง:

  1. Values: แสดงให้เห็นว่าตัวแปรที่รู้จักจะแสดงด้วยสีต่างกัน ขึ้นอยู่กับว่าได้ตั้งค่าไว้ในหน้าปัจจุบันหรือไม่
  2. คุณสมบัติคำถาม: แสดงให้เห็นว่าสามารถใช้เครื่องหมายจุด (dot notation) เข้าถึงคุณสมบัติบางอย่างของคำถามได้
  3. Math: แสดงให้เห็นว่ารองรับการคำนวณทั้งแบบพื้นฐานและแบบซับซ้อน
  4. TextProcessing: แสดงฟังก์ชันประมวลผลข้อความบางส่วนที่มีให้ใช้งาน
  5. Dates: แสดงฟังก์ชันที่เกี่ยวกับวันที่สองฟังก์ชันที่มีให้ใช้งาน
  6. Conditional: แสดงการใช้งานฟังก์ชัน if() โดยสามารถซ้อนตัวเลือกได้
  7. Tailored paragraph: คุณสามารถปรับแต่งรายงานได้อย่างเต็มที่ตามค่าที่ได้กรอกไว้ก่อนหน้า
  8. EM processes within strings: แสดงให้เห็นว่าสามารถแทนที่ค่าภายในสตริงได้ ตัวอย่างนี้สร้างชื่อรูปภาพที่ปรับแต่งตามผู้ตอบ
  9. EM doesn't process curly braces like these: แสดงให้เห็นว่าหากมีการ escape เครื่องหมายปีกกา หรือมีช่องว่างระหว่างนิพจน์กับเครื่องหมายปีกกา ES จะไม่ประมวลผลนิพจน์นั้น


ไวยากรณ์ EM ที่มีข้อผิดพลาด

ต่อไปนี้คือตัวอย่างข้อผิดพลาดที่พบบ่อยเมื่อพิมพ์นิพจน์ ES โปรดทราบว่าทูลทิปจะให้ข้อมูลเพิ่มเติม

  1. Inline Javascript ที่ลืมเว้นวรรคหลังเครื่องหมายปีกกา
    • เนื่องจาก "document.write" ปรากฏทันทีหลังเครื่องหมายปีกกา EM จึงคิดว่าเป็นนิพจน์ และใส่กรอบสีแดงให้ "document" และ "write" เพราะเป็นตัวแปรและฟังก์ชันที่ไม่ได้กำหนดตามลำดับ
  2. ตัวแปร ฟังก์ชัน และตัวดำเนินการที่ไม่รู้จักหรือสะกดผิด
    • ในที่นี้เราลืมว่าเราใช้ชื่อตัวแปร "gender" ไม่ใช่ "sex" แต่ EM ตรวจพบข้อผิดพลาดนั้น และยังใส่กรอบสีแดงให้ '++' เพราะไม่ใช่ตัวดำเนินการที่รองรับ
  3. แจ้งเตือนหากใช้ = แทน eq หรือทำการกำหนดค่า
    • โปรดทราบว่า '=' และ '+=' เป็นข้อความสีแดงแทนที่จะเป็นสีดำ หากคุณเลื่อนเมาส์ไปวางเหนือตัวดำเนินการเหล่านั้น คุณจะเห็นคำเตือนว่าคุณกำลังกำหนดค่า
  4. จำนวนอาร์กิวเมนต์ของฟังก์ชันไม่ถูกต้อง
    • if() รับ 3 อาร์กิวเมนต์ แต่ถูกกำหนดให้ 4 ดังนั้นการเลื่อนเมาส์ไปวางเหนือ "if" ที่มีกรอบสีแดงจะอธิบายข้อผิดพลาดและแสดงไวยากรณ์ที่รองรับ
    • sum() รับอาร์กิวเมนต์ได้ไม่จำกัดจำนวน แต่เรามีเครื่องหมายจุลภาคเกินก่อนวงเล็บปิด จึงถูกใส่กรอบสีแดง
  5. วงเล็บไม่ตรงกัน
    • นี่เป็นหนึ่งในข้อผิดพลาดที่พบบ่อยที่สุดเมื่อเขียนนิพจน์
    • ตัวอย่างนี้แสดงการขาดวงเล็บปิดสองตัวอย่าง และการมีวงเล็บปิดเกินหนึ่งตัวอย่าง
  6. ไวยากรณ์ที่ไม่รองรับ
    • หากคุณใช้ตัวดำเนินการหรือเครื่องหมายวรรคตอนที่ ES ไม่รองรับ ระบบจะใส่กรอบสีแดงให้
  7. การกำหนดค่าที่ไม่ถูกต้อง
    • ตัวแปรบางตัวเป็นแบบ readWrite และสามารถเปลี่ยนค่าได้ ส่วนตัวแปรอื่นเป็นแบบอ่านอย่างเดียว
    • หากคุณพยายามเปลี่ยนค่าของตัวแปรแบบอ่านอย่างเดียว จะไม่สามารถทำได้ EM จะใส่กรอบสีแดงให้กับความพยายามนั้น
    • หากคุณพยายามกำหนดค่าให้สมการหรือสตริง คุณจะได้รับข้อผิดพลาดเช่นกัน



ตัวอย่าง "สด" ของการไฮไลต์ไวยากรณ์พร้อมทูลทิปที่ใช้งานได้

ต้นฉบับPretty Printผลลัพธ์
ตัวอย่างไวยากรณ์ที่ถูกต้องพร้อมทูลทิป
สวัสดี {if(gender=='M','Mr.','Mrs.')} {surname}, ตอนนี้เวลา {date('g:i a',time())}. คุณทราบหรือไม่ว่า {sum(numPets,numKids)} ลูกและสัตว์เลี้ยงของคุณอยู่ที่ไหน?
ตัวอย่างไวยากรณ์ที่ถูกต้องพร้อมทูลทิป
สวัสดี if(gender == 'M','Mr.','Mrs.') surname, ตอนนี้เวลา date('g:i a',time()). คุณทราบหรือไม่ว่า sum(numPets,numKids) ลูกและสัตว์เลี้ยงของคุณอยู่ที่ไหน?
ตัวอย่างไวยากรณ์ที่ถูกต้องพร้อมทูลทิป
สวัสดี Mr. Smith, ตอนนี้เวลา 6:07 am. คุณทราบหรือไม่ว่า 3 ลูกและสัตว์เลี้ยงของคุณอยู่ที่ไหน?
ตัวอย่างข้อผิดพลาดที่พบบ่อยเพื่อให้คุณดูทูลทิป
ตัวแปรที่ใช้ก่อนที่จะประกาศ: {notSetYet}
ฟังก์ชันที่ไม่รู้จัก: {iff(numPets>numKids,1,2)}
ตัวแปรที่ไม่รู้จัก: {sum(age,num_pets,numKids)}
จำนวนพารามิเตอร์ไม่ถูกต้อง: {sprintf()},{if(1,2)},{date()}
กำหนดค่าให้ตัวแปรแบบอ่านอย่างเดียว:{TOKEN:ATTRIBUTE_1+=10},{name='Sally'}
วงเล็บไม่สมดุล: {pow(3,4},{(pow(3,4)},{pow(3,4))}
นี่คือข้อผิดพลาดที่พบบ่อย เพื่อให้คุณเห็นทูลทิป
ตัวแปรที่ใช้ก่อนที่จะถูกประกาศ: notSetYet
ฟังก์ชันที่ไม่รู้จัก: iff(numPets > numKids,1,2)
ตัวแปรที่ไม่รู้จัก: sum(age,num_pets,numKids)
จำนวนพารามิเตอร์ไม่ถูกต้อง: sprintf(),if(1,2),date()
การกำหนดค่าให้ตัวแปรแบบอ่านอย่างเดียว:TOKEN:ATTRIBUTE_1+=10,name='Sally'
วงเล็บไม่สมดุล: pow(3,4,(pow(3,4),pow(3,4))
นี่คือข้อผิดพลาดที่พบบ่อย เพื่อให้คุณเห็นทูลทิป
ตัวแปรที่ใช้ก่อนที่จะถูกประกาศ: notSetYet
ฟังก์ชันที่ไม่รู้จัก: iff(numPets > numKids,1,2)
ตัวแปรที่ไม่รู้จัก: sum(age,num_pets,numKids)
จำนวนพารามิเตอร์ไม่ถูกต้อง: sprintf(),if(1,2),date()
การกำหนดค่าให้ตัวแปรแบบอ่านอย่างเดียว:TOKEN:ATTRIBUTE_1+=10,name='Sally'
วงเล็บไม่สมดุล: pow(3,4,(pow(3,4),pow(3,4))
นี่คือตัวอย่างบางส่วนของไวยากรณ์ที่ไม่รองรับ
ไม่รองรับ '++', '--', '%',';': {min(++age, --age,age % 2);}
และไม่รองรับ '|', '&', '^': {(sum(2 | 3,3 & 4,5 ^ 6)}}
และไม่รองรับอาร์เรย์: {name[2], name['mine']}
นี่คือตัวอย่างบางส่วนของไวยากรณ์ที่ไม่รองรับ
ไม่รองรับ '++', '--', '%',';': min( ++ age, -- age,age % 2) ;
และไม่รองรับ '|', '&', '^': (sum(2 | 3,3 & 4,5 ^ 6)}
และไม่รองรับอาร์เรย์: name [ 2 ] ,name [ 'mine' ]
นี่คือตัวอย่างบางส่วนของไวยากรณ์ที่ไม่รองรับ
ไม่รองรับ '++', '--', '%',';': min( ++ age, -- age,age % 2) ;
และไม่รองรับ '|', '&', '^': (sum(2 | 3,3 & 4,5 ^ 6)}
และไม่รองรับอาร์เรย์: name [ 2 ] ,name [ 'mine' ]


ตัวอย่างการปรับแต่งข้อความ

"เรียนคุณ {Mr}/{Mrs} Smith..."

ใช้ฟังก์ชัน if() เพื่อเลือกแสดง 'Mr.' หรือ 'Mrs.' ตามเงื่อนไข

ไวยากรณ์คือ if(test,do_if_true,do_if_false)

# รหัส คำถาม ประเภท
1 gender What is your gender? เพศ
2 example1 Dear {if(gender=='M','Mr.','Mrs.')} Smith, ... ข้อความแบบยาว



ดังที่เห็นด้านล่าง "Mr" และ "Mrs" จะถูกปรับตามคำตอบที่ผู้ตอบเลือกในคำถาม "gender"



"เรียนคุณ {Mr}/{Mrs} Smith..." ใน email เชิญชวน

คุณสามารถใช้ตัวอย่างข้างต้นใน email เชิญชวนได้ โดยใช้แอตทริบิวต์จากตารางโทเคน ใช้ฟังก์ชัน if() เพื่อเลือกว่าจะใช้ 'Mr.' หรือ 'Mrs.' ในอีเมล


ไวยากรณ์คือ "if(test,do_if_true,do_if_false)"

# แอตทริบิวต์ ค่า
1 นามสกุล Smith
2 ที่อยู่อีเมล์ test@test.com
3 ATTRIBUTE_2 M


ข้อความใน email เชิญชวน:

Dear {if(ATTRIBUTE_2=='M','Mr','Mrs')} {LASTNAME},

you have been invited to participate in a survey:

https:/...



การดูอีเมล:


ตัวอย่างการคำนวณ / การประเมิน

คำนวณค่าการประเมินขณะทำงานและจัดเก็บผลลัพธ์ในข้อมูลแบบสำรวจ

ตัวอย่างนี้ใช้ฟีเจอร์ทั้งหมดของ EM รวมถึงความสัมพันธ์กัน การปรับแต่งข้อความ (Tailoring) และคำถามประเภทสมการ

ตัวอย่างนี้ยังแสดงให้เห็นว่าฟีเจอร์ทั้งหมดรองรับ JavaScript ดังนั้นหากคุณใช้ฟีเจอร์เหล่านี้ในหน้าเดียวกัน หน้านั้นจะเปลี่ยนแปลงแบบไดนามิกเมื่อผู้ตอบกำหนดและเปลี่ยนคำตอบ

# รหัส คำถาม ประเภท ความสัมพันธ์กัน
1 numKids How many children do you have? อินพุตตัวเลข 1
2 kid1 How old is your first child? อินพุตตัวเลข numKids >= 1
3 kid2 How old is your second child? อินพุตตัวเลข numKids >= 2
4 kid3 How old is your third child? อินพุตตัวเลข numKids >= 3
5 kid4 How old is your fourth child? อินพุตตัวเลข numKids >= 4
6 sumKidAges {sum(kid1.NAOK,kid2.NAOK,kid3.NAOK,kid4.NAOK)} สมการ 1
7 kidSummary You said that you have {numKids}. {if(numKids==1,'child','children')}. {if(numKids>1,implode(' ','The sum of ages of your first ',min(numKids,4),' kids is ',sumKidAges,'.'),' ')} การแสดงผลข้อความ 1


หากต้องการดาวน์โหลดตัวอย่างนี้ โปรดคลิกลิงก์ต่อไปนี้: Assessments_survey_example


ด้านล่างนี้คือภาพหน้าจอของคำถามตัวอย่าง จะเห็นได้ว่า EM ไฮไลต์ไวยากรณ์ในทุกช่องที่อาจมีการปรับแต่งข้อความ (tailoring) ในที่นี้คุณจะเห็นตัวอย่างการไฮไลต์ไวยากรณ์ของความสัมพันธ์กัน (Relevance) ชนิดของคำถามแบบสมการ (Equation) และการแทนที่ค่าภายในคำถาม นอกจากนี้ คุณยังสามารถใช้การแทนที่ค่าภายในส่วนวิธีใช้ (Help) การแสดงส่วนหัวของกลุ่ม (Group header display) ข้อความต้อนรับ และข้อความลงท้ายได้

ในตัวอย่างถัดไป เนื่องจากความสัมพันธ์กันคือ {numKids >= 2) คำถามนี้จะแสดงก็ต่อเมื่อผู้ตอบแจ้งว่ามีบุตรอย่างน้อยสองคนเท่านั้น



ด้านล่างนี้ คุณจะเห็นว่าตัวแปรแต่ละตัวมีคำต่อท้าย .NAOK ติดอยู่ ทั้งนี้เนื่องจากวิธีที่ EM รองรับความสัมพันธ์กันแบบต่อเนื่อง (cascading relevance) หากไม่มี .NAOK ผลรวมจะถูกคำนวณก็ต่อเมื่อผู้ตอบบอกว่ามีบุตร 4 คนเท่านั้น (กล่าวคือ เมื่อตัวแปรทั้งหมดมีความสัมพันธ์กัน) การใช้ .NAOK หมายความว่าเราต้องการคำนวณผลรวมแม้ว่าตัวแปรทั้งหมดหรือบางส่วนจะไม่เกี่ยวข้องกันก็ตาม (กล่าวคือ "Not Applicable" (NA) ถือว่าใช้ได้ (OK))

อย่างไรก็ตาม แอตทริบิวต์ .NAOK มีผลเฉพาะกับการส่งตัวแปรเข้าสู่ EM เท่านั้น หากผู้ตอบบอกในตอนแรกว่ามีบุตร 3 คนและกรอกอายุของแต่ละคน จากนั้นเปลี่ยนใจและบอกว่ามี 2 คน เราไม่ต้องการให้แสดงผลรวมของค่าทั้ง 3 ที่กรอกไว้ เพราะบุตรคนที่สามถือว่า "ไม่เกี่ยวข้อง" (not applicable) ในกรณีนี้แล้ว:



นิพจน์แต่ละรายการจะถูกแยกสีด้วยพื้นหลังสีแทน (tan) จะเห็นว่ามีนิพจน์แยกกันสามรายการในที่นี้ รายการสุดท้ายมีข้อความที่จะแสดงตามเงื่อนไขเฉพาะเมื่อผู้ตอบมีบุตรมากกว่าหนึ่งคนเท่านั้น



ต่อไปนี้คือภาพหน้าจอของแบบสำรวจขณะใช้งานจริง

เมื่อเข้าสู่หน้านี้ครั้งแรก คุณจะเห็นดังนี้ โปรดสังเกตว่าข้อความแสดงว่า "You have 0 children" แทนที่จะเป็น "You have 0 child"



หากฉันเปลี่ยนค่าจำนวนบุตรเป็น 1 การแสดงผลจะเปลี่ยนเป็นดังนี้ทันที ทั้งที่อยู่ในหน้าเดียวกัน:



สังเกตว่าตอนนี้ไวยากรณ์ถูกต้องแล้ว: "You have 1 child"

ตอนนี้ฉันเปลี่ยนค่าจำนวนบุตรเป็น 3 และการแสดงผลจะเปลี่ยนเป็นดังนี้ทันที

สังเกตว่าตอนนี้คุณจะเห็นข้อความตามเงื่อนไขที่ด้านล่าง: "The sum of ages of your first 3 kids is 0."



ต่อไปฉันจะกรอกอายุของบุตรสมมติ และจะได้การแสดงผลที่รวมอายุของพวกเขาดังนี้:



คะแนนและการแสดงผลจะอัปเดตทันทีเมื่อฉันกรอกค่า ดังนั้นคุณจึงสามารถใช้วิธีนี้เพื่อแสดงผลรวมสะสมของคะแนนการประเมินได้


ตอนนี้ฉันเปลี่ยนค่าจำนวนบุตรเป็น 2 การแสดงผลจะเปลี่ยนเป็นดังนี้:



สังเกตว่าแม้ว่าฉันจะกรอกค่า 5.5 สำหรับบุตรคนที่สามไว้ แต่ตอนนี้รายงานจะรวมเฉพาะค่าของบุตร 2 คนแรกเท่านั้น

สาเหตุคือค่าที่ 3 ไม่เกี่ยวข้องอีกต่อไป และ EM จะละเว้นค่าที่ไม่เกี่ยวข้องโดยอัตโนมัติ

หากฉันเปลี่ยนจำนวนบุตรกลับเป็น 3 ฉันจะเห็นค่า 5.5 ที่เคยกรอกไว้อีกครั้ง ดังนั้นข้อมูลที่ฉันกรอกในหน้านี้จะไม่สูญหายไป

อย่างไรก็ตาม หากฉันไปยังหน้าถัดไปหรือหน้าก่อนนี้ ค่าที่ไม่เกี่ยวข้องทั้งหมดจะถูกตั้งเป็น NULL ในเซสชันและในฐานข้อมูล ดังนั้น หากฉันคงค่าไว้ที่ 2 ไปยังหน้าถัดไป แล้วกลับมาและระบุว่ามีบุตร 3 คน ฉันจะไม่เห็นอายุ 5.5 อีกต่อไป


กรอกข้อมูลและดูรายงานที่เปลี่ยนแปลงแบบไดนามิกของข้อมูลที่กรอกในหน้าเดียวกัน

ตัวอย่างนี้แสดงกระบวนการปรับแต่งข้อความ (Tailoring) ภายใน LimeSurvey

หากต้องการดาวน์โหลดตัวอย่างนี้ ให้คลิกลิงก์ต่อไปนี้: ตัวอย่างแบบสำรวจการเปลี่ยนแปลงแบบไดนามิก

นี่คือหน้าตาของหน้าในตอนเริ่มต้น คุณจะเห็นเฉพาะคำถามที่ถามว่าคุณอาศัยอยู่ในเมืองใด:



เมื่อคุณเริ่มป้อนคำตอบ กระบวนการปรับแต่งเนื้อหา (tailoring) ก็จะเริ่มทำงานเช่นกัน:


เมื่อคุณป้อนคำตอบ ตารางที่ด้านล่างของหน้าจะอัปเดตเพื่อแสดงรหัสคำตอบและค่าของคำตอบของคุณ


ตัวอย่างการดีบักที่พบบ่อย

คำสั่ง if() แบบซ้อนกัน (ตรรกะเงื่อนไข)

EM รองรับฟังก์ชัน "if(test,do_if_true,do_if_false)" เพื่อให้คุณสามารถทำตรรกะเงื่อนไขหรือการปรับแต่งเนื้อหาได้ ฟังก์ชันนี้สามารถซ้อนกันได้เพื่อให้ได้ผลเทียบเท่ากับ "if { } else if { } else { }" EM จะแจ้งให้คุณทราบหากวงเล็บไม่สมดุลกัน (เช่น ขาดวงเล็บปิดขวา) หรือหากมีวงเล็บปิดขวาเกินมา คุณควรลองนับวงเล็บขณะเขียนคำสั่ง if แบบซ้อนกันที่ยาว จากนั้นบันทึก ตรวจสอบข้อผิดพลาดของไวยากรณ์ และแก้ไขหากพบข้อผิดพลาด มาลองตรวจสอบตัวอย่างด้านล่างไปด้วยกัน

คุณสามารถเข้าถึงกลุ่มคำถามที่ใช้ด้านล่างนี้ได้จากที่นี่: ตัวอย่างแบบสำรวจการปรับแต่งเนื้อหา.lsg


ก่อนอื่น เมื่อยังไม่ได้ป้อนอะไร คุณจะเห็นเพียง "สวัสดี"



หากคุณป้อนชื่อ ระบบจะแสดงว่า "สวัสดี {name}"



หากคุณป้อนอายุ คุณจะได้รับข้อความที่ปรับแต่งตามว่าคุณเป็นเด็กวัยก่อนเข้าเรียนหรือไม่:



วัยเรียน วัยรุ่น หรือผู้ใหญ่ นี่คือวัยรุ่นที่ต้องการไม่เปิดเผยตัวตน:



นี่คือไฟล์ตรรกะของกลุ่ม ดังที่เห็นในคำถามแบบ "if-based" มีคำสั่ง if แบบซ้อนกันตามอายุของบุคคลนั้น



เมื่อคุณแก้ไขคำถามนี้ครั้งแรก มีแนวโน้มว่าในบางจุดคุณจะใส่จำนวนวงเล็บผิด นี่คือสิ่งที่เกิดขึ้นหากวงเล็บน้อยเกินไป:



หากคุณวางเมาส์เหนือคำว่า "if" ซึ่งถูกล้อมด้วยกรอบสีแดง จะแสดงข้อความ "Parentheses not balanced" ในกรณีนี้ ควรมีวงเล็บปิดสี่ตัวหลังคำว่า "already an adult!" แต่มีเพียงสามตัว

ในทางกลับกัน หากคุณมีวงเล็บปิดขวาเกินมา วงเล็บนั้นจะถูกล้อมด้วยกรอบสีแดง ดังนี้:



เมื่อคุณกำลังแก้ไขคำถามจริง คำถามจะมีลักษณะดังนี้: