ฉันเป็นคนประเภท B และไม่รู้วิธีใช้วิดีโอในการแก้ปัญหา ดังนั้นฉันจึงต้องใช้คำที่สับสนในการเขียน
ภายใต้สถานการณ์ปกติ สถานการณ์นี้มีประโยชน์สำหรับไดเรกทอรีรอง ขณะนี้มี JS หลายประเภทที่เผยแพร่บนเว็บไซต์ แต่ทั้งหมดนี้ไม่มีอะไรมากไปกว่ารหัส JS ที่ทำให้คนอย่างฉันสับสน - ทั้งหมดในครั้งเดียวสำหรับ... อาร์เรย์ทั้งหมดในครั้งเดียว
โดยไม่ต้องกังวลใจอีกต่อไป เรามาเข้าประเด็นกันดีกว่า
ก่อนอื่นคุณต้องสร้างตารางก่อน แน่นอนว่าหากไดเร็กทอรีได้ถูกสร้างขึ้นในตารางของคุณแล้ว คุณสามารถละเว้นขั้นตอนนี้ได้ แต่มีสิ่งหนึ่งที่ต้องเตือนคุณ: ตารางนี้เป็นพื้นฐานสำหรับตัวอย่างของฉัน (ฉันไม่รู้ว่านี่ถูกต้องหรือไม่)
เนื่องจากตารางที่ฉันใช้คือ ACCESS ฉันจะไม่สร้างตารางเลย ฉันจะแสดงรายการเฉพาะชื่อฟิลด์ที่เกี่ยวข้องของทั้งสองตารางนี้ (ชื่อฐานข้อมูล: db.mdb):
ชื่อตาราง: type_tree - ฟิลด์คลาสพาเรนต์: type_id (หมายเลขอัตโนมัติ) type_name (ชื่อหมวดหมู่)
ชื่อตาราง: s_type - ฟิลด์คลาสย่อย: id (หมายเลขอัตโนมัติ) s_name (ชื่อหมวดหมู่ย่อย) type_id (ID คลาสพาเรนต์) - และสอดคล้องกับคลาสพาเรนต์ ตาราง
การเชื่อมต่อฐานข้อมูลได้ถูกสร้างขึ้นแล้ว:
Dim conn, connStrSet conn = server.CreateObject("ADODB.Connection")connStr = "Provider = Microsoft.jet.oledb.4.0;"connStr = connStr & "Data Source = " & server .mappath("db.mdb")Conn.เปิด connStr
ไม่จำเป็นต้องอธิบายโค้ดข้างต้น เนื่องจากเป็นโค้ดที่ใช้กันทั่วไป -
เข้าสู่การปฏิบัติจริงแล้ว :)
โดยทั่วไปเมนูบริบทรองจะสร้างด้วยเมนูแบบเลื่อนลง และฉันก็ไม่มีข้อยกเว้นที่นี่ และฉันก็ใช้เมนูแบบเลื่อนลงเพื่อสร้างด้วย
แต่มีสิ่งหนึ่งที่แตกต่างที่นี่
หนึ่งใช้เมนูข้าม นี่เป็นสิ่งสำคัญมาก ความสำเร็จขึ้นอยู่กับว่าใช้เมนูอย่างถูกต้องหรือไม่!
ด้านล่างนี้เป็นโค้ดสำหรับเมนูข้ามนี้!
<select name="first" onChange="MM_jumpMenu('parent',this,0)">
-
sql = "เลือก [type_id], [type_name] จาก [type_tree]"
set rs = conn.execute(sql)'รับ ID และชื่อของคลาสพาเรนต์
ถ้า rs.eof หรือ rs.bof แล้ว
response.write "<option>-----</option>" 'หากไม่มีบันทึก ให้แสดง -----
อื่น
ในขณะที่ not(rs.eof หรือ rs.bof) 'หากมีบันทึก ให้ระบุชื่อผู้ปกครองเพื่อสร้างรายการแบบเลื่อนลง
response.write ("<option value='?sec=" & rs(0) & "'")
ถ้า cstr(rs(0)) = request.querystring("sec") แล้ว
ตอบกลับเขียนว่า "เลือกแล้ว"
สิ้นสุดถ้า
response.write (">" & rs(1) & "</option>")
rs.movenext
เวน
rs.movefirst 'เลื่อนเคอร์เซอร์ไปที่รายการแรกเพื่อใช้ในภายหลัง
สิ้นสุดถ้า
-
</เลือก>
อ้อ มีโค้ดอีกอันที่ฉันลืมโพสต์ นี่คือกุญแจสำคัญในการข้ามไปที่เมนู ดูความประมาทของฉันสิ!
เพิ่มเพื่อเพิ่ม:
<script language="JavaScript" type="text/JavaScript">
-
ฟังก์ชั่น MM_jumpMenu (targ, selObj, กู้คืน) {//v3.0
eval(targ+".location='"+selObj.options[selObj.selectedIndex].value+"'");
ถ้า (กู้คืน) selObj.selectedIndex=0;
-
-
</สคริปต์>
โค้ดด้านบนถูกวางลงใน <head> และสร้างขึ้นโดย DW ฉันไม่ค่อยเข้าใจว่ามันหมายถึงอะไร ดังนั้นฉันจะไม่แสดงความคิดเห็น :D
ตอนนี้เป็นส่วนรองของเมนู นี่ไม่ใช่เมนูข้าม แต่เป็นเพียงรายการ ดังนั้นความแตกต่างเพียงอย่างเดียวระหว่างโค้ดและเมนูกระโดดด้านบนคือฟังก์ชัน onchange
ต่อไปนี้เป็นโค้ดของเมนูนี้ เนื่องจากลูปและการตัดสินมีความซับซ้อนมากกว่าที่กล่าวมาข้างต้น ทุกคนจึงควรอ่านให้ชัดเจน
<select name="วินาที">
<%ถ้า rs.eof หรือ rs.bof แล้ว
response.write ("<ตัวเลือก>--------</ตัวเลือก>")
อื่น
ถ้า request.querystring("sec") = "" ดังนั้น 'รับค่า sec หลังจากการกระโดด
temp=rs(0) ถ้าว่าง ให้ตั้งค่าของ temp เป็นค่าของบันทึกแรก
อื่น
temp = request.querystring("sec") 'มิฉะนั้นจะเป็นค่าที่ได้รับ
สิ้นสุดถ้า
subsql = "เลือก [s_name] จาก [s_type] โดยที่ type_id='"&temp&"'"
set subrs = conn.execute(subsql) 'แสดงรายการบันทึกทั้งหมดที่มีข้อมูลเป็น temp
ถ้า subrs.eof หรือ subrs.bof แล้ว
response.write ("<ตัวเลือก>-----</option>")
'หากไม่มีบันทึก ให้แสดง "-----" ในรายการนี้
อื่น
ในขณะที่ไม่ (subrs.eof หรือ subrs.bof)' มิฉะนั้น ให้ใช้การวนซ้ำเพื่อแสดงรายการบันทึกทั้งหมดที่ตรงตามเงื่อนไข
response.write ("<option value=" & subrs(0) & ">" & subrs(0) & "</option>")
subrs.movenext
เวน
สิ้นสุดถ้า
สิ้นสุดถ้า
'ปิดชุดบันทึกทั้งหมด
subrs.ปิด
ตั้งค่า subrs = ไม่มีเลย
฿.ปิด
setrs=ไม่มีอะไร
เชื่อมต่อปิด
ตั้ง conn = ไม่มีอะไร
-
</select>
จนถึงขณะนี้ขั้นตอนการสร้างเมนูรองนี้เสร็จสิ้นแล้ว ง่ายมาก ตามที่ผมอธิบายไว้
ถ้าคุณไม่เข้าใจกรุณาหยุดพูด ยังไงก็ตาม ฉันไม่รู้จะพูดอะไรอีกต่อไป
ผู้เชี่ยวชาญยินดีให้คำแนะนำแก่คุณ