JavaScript สำหรับเครื่องมือเพิ่มประสิทธิภาพ: การทำงานกับฟิลด์อินพุต

เผยแพร่แล้ว: 2021-04-01
JavaScript สำหรับตัวเพิ่มประสิทธิภาพ การทำงานกับช่องใส่ข้อมูล

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

บทความในแต่ละชุดครอบคลุมวิธีการต่างๆ ของ JavaScript ซึ่งแสดงให้เห็นโดยนำแนวทางปฏิบัติที่ดีที่สุดไปใช้กับเว็บไซต์เป็นกรณีสมมุติ

กรณีธุรกิจ: ปรับช่องป้อนข้อมูลให้เหมาะสมเพื่อปรับปรุง UX

กรณีสมมุติของเราในบทนี้เป็นเรื่องเกี่ยวกับ การทำงานกับช่องใส่ข้อมูลเพื่อปรับปรุงประสบการณ์ของผู้ใช้

การวิจัยพบว่าผู้ใช้มักจะพบว่าแบบฟอร์มการเลือกใช้น่าหงุดหงิด เพื่อลดผลกระทบ เราระบุช่องป้อนข้อมูลเฉพาะที่เราต้องการเปลี่ยนแปลง

ในสถานการณ์สมมตินี้ เรามาถึงสมมติฐานต่อไปนี้:

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

ปรับปรุงการสร้างสมมติฐานของคุณโดยใช้เครื่องมือสร้างสมมติฐานฟรีของ Convert หรือเรียนรู้เพิ่มเติมเกี่ยวกับการสร้างสมมติฐาน

เพื่อทดสอบสมมติฐานนี้ เราจะใช้การเปลี่ยนแปลงด้านล่าง:

ปรับช่องป้อนข้อมูลให้เหมาะสม
สคริปต์เปลี่ยนช่องใส่

รหัสที่ใช้ในการทดลอง

ตอนนี้สำหรับส่วนที่สนุก!

ในการดำเนินการเปลี่ยนแปลง เราเรียกใช้โค้ด JavaScript ต่อไปนี้บนหน้าการทดสอบ ลองใช้เองแล้วเห็นผลจริง!

 var testForm = document.querySelector(".testForm");
var firstNameInput = testForm.childNodes[3];
var emailInput = testForm.childNodes[8];
var maleRadio = document.getElementById("ชาย");
var femaleRadio = document.getElementById("เพศหญิง");
var rangeSlider = document.getElementsByClassName("ตัวเลื่อน");
var googleSelector = document.getElementById("google");

ฟังก์ชัน addPlaceholder (inputField, placeHolderText) {
  inputField.setAttribute("ตัวยึดตำแหน่ง", placeHolderText);
}
addPlaceholder(firstNameInput, "เจอโรน");
addPlaceholder (emailInput, "[email protected]");

ฟังก์ชั่น changeRadioSelection (oldButton, newButton) {
  oldButton.removeAttribute("ตรวจสอบแล้ว");
  newButton.setAttribute("ตรวจสอบแล้ว", "ตรวจสอบแล้ว");
}
changeRadioSelection(วิทยุชาย,วิทยุหญิง);

ฟังก์ชั่น changeRangeValue (ช่วง, ค่า) {
  range[0].setAttribute("value", ค่า);
}
changeRangeValue(rangeSlider, "50");

ฟังก์ชัน addExtraSelectOption (selectDiv, optionName, optionValue) {
  var newOption = document.createElement("OPTION");
  var newOptionNode = document.createTextNode (ชื่อตัวเลือก);
  newOption.appendChild (newOptionNode);
  newOption.setAttribute("ค่า", optionValue);
  selectDiv.appendChild(newOption);
}
addExtraSelectOption(googleSelector, "Google Spreadsheets", "gs");

รายละเอียดของรหัส

1. ไวยากรณ์ใหม่

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

.childNodes[index] เป็นคุณสมบัติที่ส่งคืนอาร์เรย์ของโหนดย่อย คุณสามารถเข้าถึงโหนดเฉพาะในอาร์เรย์ด้วยดัชนี องค์ประกอบโหนดในอาร์เรย์เริ่มต้นที่หมายเลขศูนย์ การเข้าถึงโหนดแรกในอาร์เรย์จะทำให้คุณต้องใส่ 0 ระหว่างวงเล็บ

คุณสามารถใช้คุณสมบัตินี้แทนตัวเลือก CSS เพื่อเลือกโหนดย่อย ประโยชน์เพิ่มเติมของการใช้คุณสมบัตินี้คือการเลือกโหนดข้อความ

นี่คือตัวอย่าง:

คุณสมบัติ childNodesindex
ฟังก์ชั่นเลือก textNode ขององค์ประกอบ

ChildNodes[0] เลือกองค์ประกอบ H1 และรวบรวมลูกในอาร์เรย์ ส่งคืนอาร์เรย์ต่อไปนี้:

 [childNode, childNode2, childNode3]

ลูกคนเดียวใน H1 คือตัวหนังสือเอง ข้อความของ H1 อยู่ที่ดัชนี 0 โหนดข้อความได้รับการส่งคืนโดยคุณสมบัติ

document.getElementById(id) เป็นวิธีการที่ส่งคืนองค์ประกอบที่มีแอตทริบิวต์ id ที่ตรงกัน คุณต้องส่งต่อ id เป็นสตริง ตัวอย่างนี้เป็นเมธอด querySelector รุ่นธรรมดา คุณสามารถใช้วิธีนี้สำหรับรหัสเดียว

คุณอาจถามตัวเองว่าทำไมสิ่งนี้ถึงมีอยู่ หากคุณมีวิธี querySelector วิธีนี้มีอยู่เนื่องจากผู้สร้าง JavaScript ได้เพิ่มเมธอด getElementById ใน JavaScript เวอร์ชันก่อนหน้า ผู้สร้างได้เพิ่มเมธอด querySelector ในภายหลังเพื่อให้ง่ายต่อการเลือกองค์ประกอบ

แม้ว่าเบราว์เซอร์ส่วนใหญ่จะสนับสนุนวิธี querySelector แต่ก็สามารถช่วยตรวจสอบว่าเบราว์เซอร์ส่วนใหญ่รองรับหรือไม่

รหัสที่ไม่รองรับอาจทำให้เว็บไซต์ในเบราว์เซอร์รุ่นเก่าเสียหายได้ เว็บไซต์ที่ยอดเยี่ยมในการตรวจสอบวิธี JavaScript คือ caniuse.com

แบบสอบถามตัวเลือก
querySelector รองรับ 99,19% ของเบราว์เซอร์

document.getElementsByClassName(class) เป็นวิธีการที่ส่งคืนองค์ประกอบทั้งหมดที่มีคลาสเฉพาะภายในเอกสารทั้งหมด คุณต้องส่งต่อชั้นเรียนเป็นสตริง ส่งคืนองค์ประกอบในอาร์เรย์

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

เช่นเดียวกับเมธอด childNodes มันจะส่งคืนอาร์เรย์ที่มีการจับคู่ครั้งเดียว

.removeAttribute(attribute) เป็นวิธีที่ลบแอตทริบิวต์ออกจากองค์ประกอบ คุณจะลบค่าที่แนบมากับแอตทริบิวต์

เมื่อองค์ประกอบไม่มีแอตทริบิวต์ก็จะดำเนินการตามวิธีการโดยไม่มีข้อผิดพลาด คุณต้องส่งต่อแอตทริบิวต์เป็นสตริง

2. ตรรกะ

 var testForm = document.querySelector(".testForm");

ในโค้ดบรรทัดนี้ เรากำหนดฟอร์มให้กับตัวแปร testForm เราทำได้โดยเลือกคลาส testForm ด้วยเมธอด querySelector

แบบฟอร์มพร้อมช่องใส่
แบบฟอร์มมีช่องใส่ข้อมูลทั้งหมด
 var firstNameInput = testForm.childNodes[3];

จากนั้น เรากำหนดช่องป้อนชื่อให้กับตัวแปร firstNameInput เราทำได้โดยเลือกโหนดย่อยที่สี่ด้วยตัวเลือก childNodes สังเกตว่าดัชนีที่สามเป็นตำแหน่งที่สี่อย่างไร

ช่องใส่ชื่อ
ช่องใส่ชื่อ
 var emailInput = testForm.childNodes[8];

ที่นี่ เรากำหนดฟิลด์อินพุตเมลให้กับตัวแปร emailInput ฟิลด์อินพุตคือโหนดที่ 9 ของตัวแปร testForm

ช่องใส่อีเมล์
ช่องใส่อีเมล
 var maleRadio = document.getElementById("ชาย");

ในบรรทัดนี้ เรากำหนดปุ่มตัวเลือกด้วยค่าตัวผู้ เราใช้เมธอด getElementById เพื่อเลือกโดย id ง่ายๆ

ตรวจสอบปุ่มตัวเลือกชาย
ปุ่มตัวเลือกชายที่ตรวจสอบแล้ว
 var femaleRadio = document.getElementById("เพศหญิง");

จากนั้นเรากำหนดปุ่มตัวเลือกที่มีค่า female ให้กับตัวแปร femaleRadio ด้วยเมธอด getElementById

ปุ่มตัวเลือกหญิงที่ไม่ได้เลือก
ปุ่มตัวเลือกหญิงที่ตรวจสอบแล้ว
 var rangeSlider = document.getElementsByClassName("ตัวเลื่อน");

ที่นี่ เรากำหนดอาร์เรย์ขององค์ประกอบด้วยคลาสตัวเลื่อนให้กับตัวแปร rangeSlider ฉันใช้วิธีนี้เป็นตัวอย่าง แต่จะง่ายกว่าถ้าใช้วิธี querySelector

ตัวเลื่อนช่วง
แถบเลื่อนช่วง
 var googleSelector = document.getElementById("google");

เราเสร็จสิ้นตัวแปรของเราโดยกำหนดฟิลด์อินพุตที่เลือกกับคลาส google ให้กับตัวแปร googleSelector ของเรา

เลือกองค์ประกอบ
องค์ประกอบที่เลือกมีตัวเลือกทั้งหมด
 ฟังก์ชัน addPlaceholder (inputField, placeHolderText) {

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

 inputField.setAttribute("ตัวยึดตำแหน่ง", placeHolderText);

คุณแสดงข้อความตัวแทนโดยการเพิ่มแอตทริบิวต์ตัวแทนลงในช่องข้อความป้อนเข้า เราสามารถเพิ่มแอตทริบิวต์และค่านี้ด้วยวิธี setAttribute

 }

วงเล็บปีกกาปิดฟังก์ชันแรกของเรา

ฟังก์ชันสำหรับตัวยึดตำแหน่ง
ฟังก์ชันนี้ตั้งค่าตัวยึดตำแหน่ง
 addPlaceholder(firstNameInput, "เจอโรน");

เราเรียกใช้ฟังก์ชันในครั้งแรกเพื่อเพิ่มชื่อตัวอย่างเป็นตัวยึดตำแหน่งในช่องป้อนชื่อ

ชื่อตัวแทน
เพิ่มข้อความ “Jeroen” เป็นตัวยึดตำแหน่ง
 addPlaceholder (emailInput, "[email protected]");

เราเรียกใช้ฟังก์ชันนี้เป็นครั้งที่สองเพื่อเพิ่มที่อยู่อีเมลตัวอย่างลงในช่องป้อนข้อมูลอีเมล

อีเมลสำหรับตัวยึดตำแหน่ง
เพิ่มข้อความ “[email protected]” เป็นตัวยึดตำแหน่ง

ฟังก์ชันมีประโยชน์ในการรวมโค้ดและทำให้นักพัฒนารายอื่นเข้าใจได้ หากคุณมีสายตาที่เฉียบแหลม คุณอาจสังเกตเห็นว่าเราสามารถข้ามฟังก์ชันนี้ไปได้เลยโดยใช้โค้ดสองบรรทัดนี้:

 firstNameInput.setAttribute("ตัวยึดตำแหน่ง", "Jeroen");
emailInput.setAttribute("ตัวยึดตำแหน่ง", "[email protected]");

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

 ฟังก์ชั่น changeRadioSelection (oldButton, newButton) {

ฟังก์ชันที่สองจะลบการเลือกปุ่มตัวเลือกเก่าและเลือกปุ่มตัวเลือกใหม่ ด้วยวิธีนี้ เราสามารถเปลี่ยนปุ่มที่ตรวจสอบโดยค่าเริ่มต้นเมื่อโหลดหน้าเว็บ

 oldButton.removeAttribute("ตรวจสอบแล้ว");

แอตทริบิวต์ที่ตรวจสอบแล้วจะกำหนดปุ่มตัวเลือกที่เลือก เมื่อองค์ประกอบมีการตรวจสอบ = ”ตรวจสอบแล้ว” จะปรากฏบนหน้าจอ เราใช้วิธี removeAttribute เพื่อลบสถานะที่ตรวจสอบ เราเรียกสิ่งนี้ว่าตัวแปร oldButton ของเรา

 newButton.setAttribute("ตรวจสอบแล้ว", "ตรวจสอบแล้ว");

จากนั้นเราก็ใส่แอตทริบิวต์และค่าเดียวกันให้กับตัวแปร newButton ของเราเพื่อเปลี่ยนการเลือกเริ่มต้น

 }

วงเล็บปีกกานี้สิ้นสุดฟังก์ชันที่สองของเรา

ตรวจสอบฟังก์ชันสำหรับปุ่มตัวเลือก
ฟังก์ชันนี้จะสลับปุ่มตัวเลือกที่เลือกไว้
 changeRadioSelection(วิทยุชาย,วิทยุหญิง);

เราเรียกใช้ฟังก์ชันหนึ่งครั้งเพื่อเปลี่ยนค่าเริ่มต้นของปุ่มตัวเลือกของเราเป็นผู้หญิง

ตรวจสอบปุ่มตัวเลือกหญิง
ตอนนี้ตรวจสอบปุ่มตัวเลือกหญิงแล้ว

ที่นี่เราสามารถบันทึกโค้ดได้ 2 บรรทัดอีกครั้งโดยเพียงแค่เขียนสิ่งนี้:

 maleRadio.removeAttribute("ตรวจสอบแล้ว");
femaleRadio.setAttribute("ตรวจสอบแล้ว", "ตรวจสอบแล้ว");

ฉันชอบใช้ฟังก์ชันต่างๆ เพราะมันทำให้ฉันขยายโค้ดได้อย่างรวดเร็วในอนาคต ลองนึกภาพการทำเช่นนี้สำหรับ 20 ปุ่มกับอาร์เรย์เป็นต้น

ด้วยการทดสอบการพัฒนา เรารู้ว่าโค้ดของเรามักจะเป็นแบบชั่วคราว ดังนั้นความสมบูรณ์แบบ 100% จึงไม่จำเป็นในความคิดของฉัน

 ฟังก์ชั่น changeRangeValue (ช่วง, ค่า) {

ฟังก์ชันนี้จะเปลี่ยนค่าเริ่มต้นของแถบเลื่อนช่วง คุณป้อนองค์ประกอบช่วงเป็นอาร์กิวเมนต์แรก อาร์กิวเมนต์ที่สองต้องเป็นสตริงที่มีค่าที่คุณต้องการภายในขอบเขตของช่วง

ช่วงประเภทอินพุต
ช่วงอินพุตมีคุณลักษณะต่างๆ มากมาย

เรารู้ว่าขีดจำกัดของช่วงของเราคือ 50 เนื่องจากมีแอตทริบิวต์ max=”50″ เริ่มต้นที่ 0 เพราะมีแอตทริบิวต์ min=”0″ คุณจะสามารถเพิ่มขีดจำกัดนี้ด้วย JavaScript โดยใช้เมธอด setAttribute

 range[0].setAttribute("value", ค่า);

เราเลือกช่วงด้วยเมธอด getElementsByClassName ซึ่งหมายความว่าเราจำเป็นต้องเลือกรายการเฉพาะในอาร์เรย์เพื่อเข้าถึง เราสามารถเข้าถึงรายการแรกในอาร์เรย์โดยการเพิ่ม [0] หลังตัวแปร รหัสบรรทัดนี้จะตั้งค่าแอตทริบิวต์ค่าของช่วง

 }

วงเล็บปีกกานี้สิ้นสุดฟังก์ชันที่สาม

ฟังก์ชั่นเปลี่ยนค่าเริ่มต้นของช่วง
ฟังก์ชันนี้เปลี่ยนค่าเริ่มต้นของช่วง
 changeRangeValue(rangeSlider, "50");

จากนั้นเราเรียกใช้ฟังก์ชันของเราเพื่อเปลี่ยนค่าเริ่มต้นของช่วงเป็น 50

เปลี่ยนค่าเริ่มต้นแล้ว
ค่ามาตรฐานตอนนี้คือ50
 ฟังก์ชัน addExtraSelectOption (selectDiv, optionName, optionValue) {

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

อาร์กิวเมนต์ที่สองใช้ชื่อของตัวเลือกใหม่เป็นสตริง อาร์กิวเมนต์ที่สามใช้ค่าของตัวเลือกใหม่ของเราเป็นสตริง ค่านี้มักจะใช้เมื่อส่งข้อมูลไปยังแบ็กเอนด์ ดังนั้นจึงจำเป็นต้องทำให้ค่านี้เป็นค่าธรรมดา ที่นี่เราจะดูว่าฉันได้เพิ่มคำย่อมูลค่าสั้นให้กับตัวเลือกทั้งหมดของเราอย่างไร

ความแตกต่างระหว่างชื่อตัวเลือกและค่า
ความแตกต่างระหว่างชื่อตัวเลือกและค่า
 var newOption = document.createElement("OPTION");

ขั้นแรก เราสร้างองค์ประกอบตัวเลือกด้วยเมธอด createElement และกำหนดให้กับตัวแปร newOption

 var newOptionNode = document.createTextNode (ชื่อตัวเลือก);

จากนั้นเราสร้างโหนดข้อความด้วยตัวแปร optionName และบันทึกลงในตัวแปร newOptionNode

 newOption.appendChild (newOptionNode);

เราผนวกโหนดข้อความ newOptionNode เข้ากับตัวแปร newOption ของเรา

 newOption.setAttribute("ค่า", optionValue);

จากนั้นเราตั้งค่าตัวเลือกใหม่ของเราด้วยวิธี setAttribute

 selectDiv.appendChild(newOption);

สุดท้าย เราผนวกตัวเลือกใหม่ของเราต่อท้ายตัวแปร selectDiv ตอนนี้จะมองเห็นได้ใน DOM เนื่องจากเราผนวกไว้ ตัวเลือกนี้จะเป็นตัวเลือกสุดท้ายในเมนูแบบเลื่อนลง

 }

วงเล็บปีกกาสิ้นสุดฟังก์ชันที่สี่ของเรา

ฟังก์ชั่นสำหรับตัวเลือกพิเศษในองค์ประกอบที่เลือก
ฟังก์ชันนี้เพิ่มตัวเลือกพิเศษให้กับองค์ประกอบที่เลือก
 addExtraSelectOption(googleSelector, "Google Spreadsheets", "gs");

เราเรียกใช้ฟังก์ชันของเราเพื่อเพิ่มองค์ประกอบตัวเลือกใหม่ลงในรายการแบบเลื่อนลง

เพิ่มตัวเลือกใหม่ในองค์ประกอบที่เลือก
ตอนนี้เราสามารถเลือก Google Spreadsheets ในเมนูแบบเลื่อนลง

3. ออกกำลังกาย

วิธีที่ดีที่สุดในการเรียนรู้ JavaScript คือการลองใช้

ฉันต้องการให้คุณใช้ changeRadioSelection เพื่อเลือกตัวเลือก อื่น ฉันต้องการให้คุณเปลี่ยนค่าของช่วงเป็น 0 ด้วยเมธอด changeRangeValue และส่งข้อความมาบอกฉันว่าคุณคิดอย่างไร!

แบบฝึกหัดเพื่อการเปลี่ยนแปลงค่า
การเลือกมาตรฐานเป็นอย่างอื่นและค่าช่วงเป็น50

ไม่สามารถคิดออก? ส่งข้อความถึงฉันบน LinkedIn และฉันจะช่วยคุณ!

Google Analytics
Google Analytics