Lista select - JavaScript
Para criar uma lista, utilizamos o elemento HTML select
<select name="language" size="4">
<option value="JS" selected="selected">JavaScript</option>
<option value="Java">Java</option>
<option value="C#">C#</option>
<option value="C++">C++</option>
</select>
O atributo size
size="1"
multiple
select
Cada item da lista é representado pelo elemento HTML option
value
No JavaScript, o elemento select é representado pelo objeto HTMLSelectElement
HTMLOptionElement
Option
Todos os itens de uma lista no JavaScript são acessíveis através da coleção options
HTMLOptionElement
index
options
text
value
<form name="myForm">
<select name="language" size="4">
<option value="JS" selected="selected">JavaScript</option>
<option value="Java">Java</option>
<option value="CS">C#</option>
<option value="CPP">C++</option>
</select>
</form>
<script>
const firstLanguage = document.myForm.language.options[0];
console.log("Index:", firstLanguage.index);
console.log("Text:", firstLanguage.text);
console.log("Value:", firstLanguage.value);
</script>
Outra maneira de obter um elemento da lista por índice é usando o método item()
const firstLanguage = myForm.language.item(0);
console.log("Index:", firstLanguage.index);
console.log("Text:", firstLanguage.text);
console.log("Value:", firstLanguage.value);
Gerenciamento Dinâmico da Lista
No JavaScript, podemos não apenas recuperar elementos, mas também gerenciar a lista dinamicamente. Por exemplo, vamos implementar a adição e remoção de objetos da lista:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>Programício</title>
</head>
<body>
<form name="myForm">
<select name="language" size="5">
<option value="JS" selected="selected">JavaScript</option>
<option value="Java">Java</option>
<option value="CS">C#</option>
<option value="CPP">C++</option>
</select>
<p><input type="text" name="textInput" placeholder="Digite o texto" /></p>
<p><input type="text" name="valueInput" placeholder="Digite o valor" /></p>
<p>
<input type="button" name="addButton" value="Adicionar" />
<input type="button" name="removeButton" value="Remover" />
</p>
</form>
<script>
const myForm = document.myForm;
const addButton = myForm.addButton,
removeButton = myForm.removeButton,
languagesSelect = myForm.language;
// função para adicionar um elemento
function addOption() {
const text = myForm.textInput.value;
const value = myForm.valueInput.value;
const newOption = new Option(text, value);
languagesSelect.options[languagesSelect.options.length] = newOption;
}
// função para remover um elemento
function removeOption() {
const selectedIndex = languagesSelect.selectedIndex;
languagesSelect.options[selectedIndex] = null;
}
addButton.addEventListener("click", addOption);
removeButton.addEventListener("click", removeOption);
</script>
</body>
</html>
Neste exemplo, criamos um formulário com uma lista suspensa e dois campos de texto para inserir o texto e o valor do novo item. Os botões "Adicionar" e "Remover" são responsáveis por adicionar e remover itens da lista, respectivamente.
A função responsável por adicionar é addOption
Option
options
A função responsável pela remoção é removeOption
selectedIndex
options
null
Como alternativa, para adicionar e remover, também podemos usar os métodos add
remove
select
function addOption() {
const text = myForm.textInput.value;
const value = myForm.valueInput.value;
const newOption = new Option(text, value);
languagesSelect.add(newOption);
}
function removeOption() {
languagesSelect.remove(languagesSelect.selectedIndex);
}
Eventos do Elemento select
O elemento select suporta três eventos: blur
focus
change
change
<form name="myForm">
<select name="language" size="5">
<option value="JS" selected="selected">JavaScript</option>
<option value="Java">Java</option>
<option value="CS">C#</option>
<option value="CPP">C++</option>
</select>
</form>
<div id="selection"></div>
<script>
const languagesSelect = document.myForm.language;
const selection = document.getElementById("selection");
function changeOption() {
const selectedOption = languagesSelect.options[languagesSelect.selectedIndex];
selection.textContent = "Você escolheu: " + selectedOption.text;
}
languagesSelect.addEventListener("change", changeOption);
</script>
Lista com Múltipla Seleção
Se o elemento select
multiple
selectedOptions
HTMLCollection
<form name="myForm">
<select name="languages" multiple>
<option value="JS">JavaScript</option>
<option value="Java">Java</option>
<option value="CS">C#</option>
<option value="CPP">C++</option>
</select>
</form>
<div id="selection"></div>
<script>
const languages = document.myForm.languages;
const selection = document.getElementById("selection");
function changeOption() {
while (selection.firstChild) {
selection.removeChild(selection.firstChild);
}
const options = languages.selectedOptions;
for (let i = 0; i < options.length; i++) {
const option = options[i].text;
const div = document.createElement("div");
const optionText = document.createTextNode(option);
div.appendChild(optionText);
selection.appendChild(div);
}
}
languages.addEventListener("change", changeOption);
</script>
Neste caso, no manipulador do evento change
div
div
selection