<labelfor="colour">What is your favourite colour?</label><br /><selectid="colour"name="colour"multiple><optionvalue="red">Red</option><optionvalue="green">Green</option><optionvalue="blue">Blue</option><optionvalue="other">Other</option></select><br /><buttonname="send"id="send">Send</button>
Potrzebujesz pobrać opcje zaznaczone przez użytkownika.
Obiekt HTMLSelectElement ma atrybut o nazwie: selectedOptions, który zwraca listę obiektów: HTMLOptionElement. Są to wszystkie zaznaczone opcje na liście.
select.selectedOptions
Wiedząc, że dane z selectedOptions to lista obiektów typu HTMLOptionElement, wystarczy iterować po każdym elemencie z tej listy i pobrać wartość z atrybutu value:
Mamy liczbę: 1.456 i chcemy pobrać wartość dziesiętną z tej liczby, czyli: *0.456". Jak to można zrobić?
Wartość można pobrać za pomocą operatora: %, w taki sposób:
1.456 % 1
Problem jest taki, że zwróci: 0.45599999999999996
Można to napisać tak:
+(1.456 % 1).toFixed(3)
Zwróci: 0.456
Za pomocą toFixed wyświetlamy liczbę z dokładnością do n miejsc po przecinku. Ponieważ toFixed zwraca wprawdzie liczbę, ale w postaci stringa, warto rzutować ją na liczbę za pomocą operatora +.
A co jeśli potrzebujesz się dowiedzieć, jaka jest wartość na drugim miejscu po przecinku?
Cała sztuczka leży w użyciu Set. Po przekazaniu danych do Set pozbywasz się ewentualnych duplikatów. Dzięki temu zmieni się rozmiar zbioru i można to porównać z liczbą elementów z oryginalnej tablicy: data.