เมื่อวานนี้ฉันแก้ไขหน้า EPG บนกล่องรับสัญญาณและพบปัญหาเล็ก ๆ น้อย ๆ เมื่อผู้ใช้ซื้อเกมกล่องโต้ตอบยืนยันการซื้อจะต้องปรากฏขึ้น โฟกัสเริ่มต้นของกล่องโต้ตอบจะต้องอยู่ในปุ่ม "ยกเลิก" มันเป็นข้อกำหนดที่ง่ายมากและสามารถทำได้โดยใช้วิธีการโฟกัสของ JavaScript () ตัวอย่างรหัสง่าย ๆ มีดังนี้:
document.getElementById ("ยกเลิก"). focus ()แต่สิ่งที่ยากคือกล่องรับสัญญาณเป็นหลุมใหญ่จริงๆ เนื่องจากมันเข้ากันได้กับโมเดลกล่องรับสัญญาณที่มีอยู่ทั้งหมดจึงจำเป็นต้องปรับกล่องรับสัญญาณ 8 กล่อง แล้วปัญหาก็เกิดขึ้น! กล่องรับสัญญาณของ ZTE B600 ไม่สามารถตั้งค่าโฟกัสไปที่ปุ่มยกเลิกได้เลย นี่คือวิธีแก้ปัญหาของฉัน:
ก่อนอื่นยืนยันว่ากล่องรับสัญญาณรองรับวิธี getElementById () และไม่ว่าจะได้รับองค์ประกอบที่ประสบความสำเร็จด้วย ID "ยกเลิก": วิธีการทดสอบนั้นง่ายมากหรือไม่ ฉันเขียนอีกครั้ง <p id = "ทดสอบ"> ทดสอบ </p> จากนั้นได้รับองค์ประกอบด้วย ID "ทดสอบ" ในสถานที่เดียวกันและดำเนินการเอกสารการดำเนินการอย่างง่าย getElementById ("ทดสอบ") innerHtml = "Hello"
ในที่สุดฉันใช้ "ลอง ... จับ (e) ... " เพื่อจับเหตุผลว่าทำไม "โฟกัส ()" ล้มเหลว
ลอง () {<span style = "space สีขาว: pre"> </span> document.getElementById ("ยกเลิก"). focus ()} catch (e) {<span style = "space สีขาว: pre"> </span> การแจ้งเตือน (e.name + ":" + e.what (); -แต่มันแปลก! ผลลัพธ์ของสองขั้นตอนข้างต้นแสดงให้เห็นว่ากล่องรับสัญญาณรองรับโฟกัส () และ getElementById () แต่มันไม่สามารถตั้งค่าโฟกัสไปที่กล่องโต้ตอบป๊อปอัพได้
หลังจากการต่อสู้นานกว่าหนึ่งชั่วโมงในที่สุดเจ้านายใหญ่ก็ปรากฏตัวขึ้นและเขาก็แก้ปัญหาด้วยประโยคง่ายๆ! เป็นไปได้ที่จะเรียก Flur () เพื่อยกเลิกโฟกัสดั้งเดิม!
document.getElementById ("ซื้อ"). flur ()จากนั้นปัญหาได้รับการแก้ไข ฉันต้องแสดงความรู้สึกของฉัน! ในกระบวนการแก้ปัญหานี้ความคิดของฉันเองค่อนข้างถูกต้อง แต่ความรู้ของฉันไม่เพียงพอ ช่องว่างระหว่างโปรแกรมเมอร์ทั่วไปและโปรแกรมเมอร์อาวุโสไม่เพียง แต่เกี่ยวกับการแก้ปัญหา แต่ยังเกี่ยวกับประสบการณ์และความรู้!