JavaScript dla optymalizatorów: praca z polami wejściowymi

Opublikowany: 2021-04-01
JavaScript dla optymalizatorów Praca z polami wejściowymi

Chcesz przetestować coś więcej niż tylko kolor przycisku? Następnie musisz nauczyć się JavaScript. Rozpocząłem serię opisującą praktyczne, krok po kroku sposoby wykorzystania JavaScript do skonfigurowania zwycięskich eksperymentów w swojej witrynie.

Każdy artykuł z tej serii omawia inną metodę JavaScript, zilustrowaną przez zastosowanie najlepszych praktyk na stronach internetowych jako hipotetycznych przypadkach.

Uzasadnienie biznesowe: zoptymalizuj pola wejściowe, aby poprawić UX

Nasz hipotetyczny przypadek w tym rozdziale dotyczy pracy z polami wejściowymi w celu poprawy komfortu użytkownika .

Badania wykazały, że użytkownicy często uważają formularze do wyrażania zgody za frustrujące. Aby złagodzić wpływ, identyfikujemy konkretne pola wejściowe, które chcemy zmienić.

W tym hipotetycznym scenariuszu dochodzimy do następującej hipotezy:

Ponieważ zauważyliśmy, że formularz zgody jest dla naszych klientów bardzo frustrujący, spodziewamy się, że zmiana go spowoduje wzrost konwersji. Zmierzymy to za pomocą wskaźnika dobrowolnego udziału.

Usprawnij generowanie hipotez za pomocą bezpłatnego narzędzia do generowania hipotez Convert lub dowiedz się więcej o tworzeniu hipotez.

Aby przetestować tę hipotezę, zastosujemy poniższe zmiany:

Optymalizuj pola wejściowe
Skrypt zmienia pola wejściowe

Kod użyty w eksperymencie

Teraz zabawa!

Aby wykonać zmianę, uruchamiamy następujący kod JavaScript na stronie testowej. Wypróbuj sam, aby zobaczyć to w akcji!

 var testForm = document.querySelector(.testForm");
var firstNameInput = testForm.childNodes[3];
var emailInput = testForm.childNodes[8];
var maleRadio = document.getElementById("mężczyzna");
var femaleRadio = document.getElementById("kobieta");
var rangeSlider = document.getElementsByClassName("suwak");
var googleSelector = document.getElementById("google");

function addPlaceholder(inputField, placeHolderText) {
  inputField.setAttribute("placeholder", placeHolderText);
}
addPlaceholder(imięInput, "Jeroen");
addPlaceholder(emailInput, "[email protected]");

function changeRadioSelection(oldButton, newButton) {
  oldButton.removeAttribute("zaznaczone");
  newButton.setAttribute("sprawdzone", "sprawdzone");
}
changeRadioSelection(maleRadio, femaleRadio);

function changeRangeValue(zakres, wartość) {
  range[0].setAttribute("wartość", wartość);
}
changeRangeValue(rangeSlider, "50");

function addExtraSelectOption(selectDiv, optionName, optionValue) {
  var newOption = document.createElement("OPCJA");
  var newOptionNode = document.createTextNode(OptionName);
  nowaOpcja.appendChild(nowaOpcjaNode);
  newOption.setAttribute("wartość", opcjaWartość);
  selectDiv.appendChild(nowaOpcja);
}
addExtraSelectOption(googleSelector, "Arkusze kalkulacyjne Google", "gs");

Podział Kodeksu

1. Nowa składnia

Podział zaczyna się od przejrzenia całej nowej składni w powyższym przykładzie. Ponieważ ten artykuł jest częścią serii, sprawdź pełną dokumentację składni w poprzednich artykułach.

.childNodes[index] to właściwość, która zwraca tablicę węzłów podrzędnych. Możesz uzyskać dostęp do określonych węzłów w tablicy za pomocą indeksu. Elementy węzła w tablicy zaczynają się od liczby zero. Uzyskanie dostępu do pierwszego węzła w tablicy będzie wymagało umieszczenia 0 między nawiasami.

Możesz użyć tej właściwości zamiast selektora CSS, aby wybrać węzły podrzędne. Dodatkową korzyścią korzystania z tej właściwości jest zaznaczanie węzłów tekstowych.

Oto przykład:

właściwość childNodesindex
Funkcja wybiera textNode elementu

ChildNodes[0] wybiera element H1 i zbiera jego dzieci w tablicy. Zwraca następującą tablicę:

 [węzeł-dziecko, węzeł-dziecko2, węzeł-dziecko3]

Jedynym dzieckiem w H1 jest sam tekst. Tekst H1 znajduje się pod indeksem 0. Węzeł tekstowy jest zwracany przez właściwość.

document.getElementById(id) to metoda zwracająca element, który ma pasujący atrybut id. Musisz przekazać identyfikator jako ciąg. Ten przykład jest prostą wersją metody querySelector. Możesz użyć tej metody dla jednego identyfikatora.

Możesz zadać sobie pytanie, dlaczego tak się dzieje, jeśli masz metodę querySelector. Ta metoda istnieje, ponieważ twórca JavaScript dodał metodę getElementById we wcześniejszej wersji JavaScript. Twórcy dodali później metodę querySelector, aby ułatwić zaznaczanie elementów.

Chociaż większość przeglądarek obsługuje metodę querySelector, warto sprawdzić, czy większość przeglądarek ją obsługuje.

Nieobsługiwany kod może zepsuć witrynę w starszej przeglądarce. Doskonałą stroną internetową do sprawdzania metod JavaScript jest caniuse.com.

selektor zapytań
querySelector jest obsługiwany przez 99,19% przeglądarek

document.getElementsByClassName(class) to metoda, która zwraca wszystkie elementy z określoną klasą w całym dokumencie. Musisz przekazać klasę jako ciąg. Zwraca elementy w tablicy.

Możesz także zastąpić dokument innym elementem, aby wyświetlał tylko elementy podrzędne zaznaczenia. Ta metoda może być bardzo pomocna, ponieważ jest bardziej wydajna. Jeśli używasz obiektu dokumentu jako wyboru, musi on sprawdzić cały dokument.

Podobnie jak metoda childNodes, zwróci tablicę z pojedynczym dopasowaniem.

.removeAttribute(attribute) to metoda, która usuwa atrybut z elementu. Usuniesz wartości dołączone do atrybutu.

Gdy element nie ma atrybutu, wykona metodę bez błędu. Musisz przekazać atrybut jako ciąg znaków.

2. Logika

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

W tym wierszu kodu przypisujemy formularz do zmiennej testForm. Robimy to wybierając klasę testForm metodą querySelector.

formularz z polami wejściowymi
Formularz zawiera wszystkie pola wejściowe
 var firstNameInput = testForm.childNodes[3];

Następnie przypisujemy pole wejściowe imienia do zmiennej firstNameInput. Robimy to, wybierając czwarty węzeł podrzędny za pomocą selektora childNodes. Zwróć uwagę, że trzeci indeks jest czwartą pozycją.

pole nazwy wejściowej
Pole wprowadzania imienia
 var emailInput = testForm.childNodes[8];

Tutaj przypisujemy pole wejściowe poczty do zmiennej emailInput. Pole wejściowe to dziewiąty węzeł zmiennej testForm.

pole wprowadzania e-mail
Pole wprowadzania adresu e-mail
 var maleRadio = document.getElementById("mężczyzna");

W tym wierszu przypisujemy przyciskowi radiowemu wartość male. Używamy metody getElementById, aby po prostu wybrać go według id.

zaznaczony męski przycisk radiowy
Zaznaczony męski przycisk radiowy
 var femaleRadio = document.getElementById("kobieta");

Następnie przypisujemy przycisk radiowy o wartości female do zmiennej femaleRadio za pomocą metody getElementById.

niezaznaczony żeński przycisk radiowy
Sprawdzony żeński przycisk radiowy
 var rangeSlider = document.getElementsByClassName("suwak");

Tutaj przypisujemy tablicę elementów z klasą slider do zmiennej rangeSlider. Użyłem tej metody jako przykładu, ale łatwiej byłoby po prostu użyć metody querySelector.

suwak zakresu
Suwak zakresu
 var googleSelector = document.getElementById("google");

Kończymy nasze zmienne, przypisując pole wejściowe select z klasą google do naszej zmiennej googleSelector.

wybierz element
Wybierz element zawiera wszystkie opcje
 function addPlaceholder(inputField, placeHolderText) {

Ta funkcja dodaje tekst zastępczy do pola wprowadzania tekstu. Możesz przekazać pole wejściowe jako pierwszy argument, a tekst zastępczy jako ciąg znaków w drugim argumencie.

 inputField.setAttribute("placeholder", placeHolderText);

Tekst zastępczy można wyświetlić, dodając atrybut zastępczy do wejściowego pola tekstowego. Możemy dodać ten atrybut i wartość za pomocą metody setAttribute.

 }

Nawias klamrowy zamyka naszą pierwszą funkcję.

funkcja dla symbolu zastępczego
Ta funkcja ustawia symbol zastępczy
 addPlaceholder(imięInput, "Jeroen");

Wywołujemy funkcję po raz pierwszy, aby dodać przykładową nazwę jako symbol zastępczy do pola wejściowego imienia.

nazwa dla symbolu zastępczego
Tekst „Jeroen” jest dodawany jako symbol zastępczy
 addPlaceholder(emailInput, "[email protected]");

Po raz drugi wywołujemy funkcję, aby dodać przykładowy adres e-mail do pola wejściowego e-mail.

e-mail dla symbolu zastępczego
Tekst „[email protected]” jest dodawany jako symbol zastępczy

Funkcje mogą być przydatne do łączenia kodu i uczynienia go zrozumiałym dla innych programistów. Gdybyś miał bystre oko, mogłeś zauważyć, że mogliśmy całkowicie pominąć tę funkcję, używając tych dwóch wierszy kodu:

 firstNameInput.setAttribute("symbol zastępczy", "Jeroen");
emailInput.setAttribute("symbol zastępczy", "[email protected]");

Dla programisty ważne jest, aby zauważyć, kiedy trzeba utworzyć funkcję i po prostu użyć prostej linii. Ten przykład mógł zaoszczędzić mi trzech linijek kodu. Mniej kodu jest zwykle lepszy dla szybkości ładowania.

 function changeRadioSelection(oldButton, newButton) {

Druga funkcja usuwa zaznaczenie starego przycisku opcji i wybiera nowy przycisk opcji. W ten sposób możemy zmienić przycisk, który jest domyślnie zaznaczony podczas ładowania strony.

 oldButton.removeAttribute("zaznaczone");

Atrybut „checked” decyduje o tym, który przycisk radiowy jest sprawdzany. Gdy element zawiera checked=”checked” pojawi się on zaznaczony na ekranie. Używamy metody removeAttribute, aby usunąć zaznaczony stan. Nazywamy to naszą zmienną oldButton.

 newButton.setAttribute("sprawdzone", "sprawdzone");

Następnie po prostu wstawiamy ten sam atrybut i wartość do naszej zmiennej newButton, aby zmienić domyślny wybór.

 }

Ten nawias klamrowy kończy naszą drugą funkcję.

funkcja przycisku radiowego sprawdzona
Ta funkcja przełącza, który przycisk radiowy jest zaznaczony
 changeRadioSelection(maleRadio, femaleRadio);

Wywołujemy tę funkcję raz, aby zmienić domyślną wartość naszych przycisków radiowych na żeńskie.

zaznaczony żeński przycisk radiowy
Żeński przycisk radiowy jest teraz zaznaczony.

Tutaj moglibyśmy ponownie zapisać 2 wiersze kodu, po prostu pisząc to:

 maleRadio.removeAttribute("zaznaczone");
femaleRadio.setAttribute("sprawdzone", "sprawdzone");

Lubię korzystać z funkcji, ponieważ pozwala mi to w przyszłości na szybką rozbudowę kodu. Wyobraź sobie na przykład, że robisz to dla 20 przycisków z tablicą.

W przypadku tworzenia testów wiemy, że nasz kod jest zazwyczaj tymczasowy, więc moim zdaniem 100% perfekcja nie jest wymogiem.

 function changeRangeValue(zakres, wartość) {

Ta funkcja zmienia domyślną wartość suwaka zakresu. Jako pierwszy argument wprowadzasz element zakresu. Drugi argument musi być ciągiem zawierającym pożądaną wartość w granicach zakresu.

zakres typu wejścia
Zakres wejściowy zawiera wiele różnych atrybutów

Wiemy, że granica naszego zakresu to 50, ponieważ ma atrybut max=”50″. Zaczyna się od 0, ponieważ ma atrybut min=”0″. Będziesz mógł zwiększyć ten limit za pomocą JavaScript, używając metody setAttribute.

 range[0].setAttribute("wartość", wartość);

Wybraliśmy zakres metodą getElementsByClassName, co oznacza, że ​​aby uzyskać do niego dostęp, musimy wybrać konkretny element w tablicy. Możemy uzyskać dostęp do pierwszego elementu w tablicy, dodając [0] po zmiennej. Ten wiersz kodu ustawi atrybut wartości zakresu.

 }

Ten nawias klamrowy kończy trzecią funkcję.

funkcja zmienia domyślną wartość zakresu
Ta funkcja zmienia domyślną wartość zakresu
 changeRangeValue(rangeSlider, "50");

Następnie wywołujemy naszą funkcję, aby zmienić domyślną wartość zakresu na 50.

zmieniono wartość domyślną
Standardowa wartość to teraz 50
 function addExtraSelectOption(selectDiv, optionName, optionValue) {

Ta funkcja dołącza element opcji do naszego rozwijanego pola wyboru. W pierwszym argumencie przekazujesz element select. Jest to rodzic wszystkich elementów opcji.

Drugi argument przyjmuje nazwę nowej opcji jako ciąg. Trzeci argument przyjmuje wartość naszej nowej opcji jako ciąg. Ta wartość jest zwykle używana podczas wysyłania danych do zaplecza, dlatego ważne jest, aby była to prosta wartość. Tutaj możemy zobaczyć, jak dodałem krótkie akronimy do wszystkich naszych opcji.

różnica między nazwami opcji a wartością
Różnica między nazwami i wartościami opcji
 var newOption = document.createElement("OPCJA");

Najpierw tworzymy element opcji metodą createElement i przypisujemy go do zmiennej newOption.

 var newOptionNode = document.createTextNode(OptionName);

Następnie tworzymy węzeł tekstowy ze zmienną optionName i zapisujemy go do zmiennej newOptionNode.

 nowaOpcja.appendChild(nowaOpcjaNode);

Dodajemy nasz węzeł tekstowy newOptionNode do naszej zmiennej newOption.

 newOption.setAttribute("wartość", opcjaWartość);

Następnie ustawiamy wartość naszej nowej opcji za pomocą metody setAttribute.

 selectDiv.appendChild(nowaOpcja);

Na koniec dołączamy naszą nową opcję do zmiennej selectDiv. Teraz będzie widoczny w DOM. Ponieważ go dodaliśmy, opcja będzie ostatnia na liście rozwijanej.

 }

Nawias klamrowy kończy naszą czwartą funkcję.

funkcja dodatkowej opcji na wybranym elemencie
Ta funkcja dodaje dodatkową opcję do wybranego elementu
 addExtraSelectOption(googleSelector, "Arkusze kalkulacyjne Google", "gs");

Wywołujemy naszą funkcję, aby dodać nasz nowy element opcji do naszego menu rozwijanego.

nowa opcja dodana w wybranym elemencie
Teraz możemy wybrać Arkusze kalkulacyjne Google z menu rozwijanego

3. Ćwiczenia

Najlepszym sposobem na naukę JavaScript jest wypróbowanie go.

Chcę, abyś skorzystał z changeRadioSelection, aby wybrać inną opcję. Chcę również, abyś zmienił wartość zakresu na 0 za pomocą metody changeRangeValue. I wyślij mi wiadomość, aby dać znać, co myślisz!

ćwiczenie na zmianę wartości
Standardowy wybór to inny i zakres wartości do 50

Nie możesz tego rozgryźć? Wyślij mi wiadomość na LinkedIn, a pomogę Ci!

Google Analytics
Google Analytics