Элемент Select в JavaScript
Динамический список – это список объектов, который используется тогда, когда составляется метаописание электронного информационного ресурса. При появлении новых электронных ресурсов он может увеличиваться в размерах.
Элемент Select в языке JavaScript по сути своей является динамическим списком. В этой статье речь пойдёт именно о нём.
Список Select в JavaScript.
Select – это список, часто использующийся в Web-страницах.Он может быть как выпадающим, так и обыкновенным. Для добавления этого элемента используется код примерно такой конструкции:
<select id=»’name’»>
<option>’option 1’</option>
<option>’option 2’</option>
<option>…</option>
<option>’option n’</option>
</select>
Где,
- <select> — элемент, имеющий закрывающий тег и атрибут id, в котором мы указываем его имя.
- <option>— элемент, означающий какое-либо значение в этом списке. Внутри этого элемента содержимое этого значения.Таких «опций» может быть достаточно много внутри одного select’а.
- ’name’ – вместо этого значения должно быть указано имя списка.
- ’option 1’— имя первой опции в списке.
- ’optionn’— имя последней опции в списке.
В предыдущем примере описано создание выпадающего списка. Нижеприведён Selectсо стандартным списком.
<select name=»’name’» size=»’numb’»>
<option value=»’option 1’» selected=»selected»>’option 1’</option>
<option value=»’option 2’»>’option 2’</option>
<option value=»’option …’»>’option …’</option>
<option value=»’option n’»>’option n’</option>
</select>
Где,
- name—атрибут cименем Select’а.
- size—атрибут, указывающий количество значений в списке.
- value– значение элемента <option>в списке.
- selected— атрибут, указывающий какой из option’ов выбран.
Методы Select’а.
В языке JavaScript доступны следующие методы элемента Select:
- add() – добавление объекта в список.
- remove()– удаление объекта в списке.
- blur()–«теряет» фокус с окна выбора.
- focus()– перемещение фокуса на окно.
- handleEvent()– вызов обработчика необходимого события.
- unwatch()– прекращает отслеживать свойство.
- watch()– начинает отслеживать свойство.
Примеры использования
Add
SelectList.add(MyOption); // добавление объекта в список, данная конструкция равносильна этой SelectList.options[SelectList.options.length]=MyOption;
Remove
SelectList.remove(CurIndex); // удаление объекта из списка, данная конструкция равносильна такой
SelectList.options[СurIndex] = null;
Blur
function removeFocus(){
MyDoc.CurForm.SelectList.blur();
}// функция, использующая метод blur<input type=BUTTON value=»Click to Remove Focus» name=»Button1″
onClick=»removeFocus()»> // вызов этой функции при нажатии на кнопку
Focus
<script>
input.onblur = function() {
if (!this.value.includes(‘@’)) {
// показывает ошибку, если строка не является email-адресом
this.SelectList.add(«error»); // добавление объекта
// возвращает фокус
input.focus();
} else {
this.SelectList.remove(«error»); // удаление объекта
}
};
</script>
HandleEvent
window.onClick = clickHandler;
function clickHandler{
window.MyDoc.CurForm.SelectList.handleEvent;
}
Watch и Unwatch
Пример кода:
varo = { p: 1 };
o.watch(‘p’, function (id, oldval, newval) {
console.log(‘o.’ + id + ‘ changed from ‘ + oldval + ‘ to ‘ + newval);
return newval;
}); // вызов метода watch и начало отслеживания заданного свойства
o.p = 2; // изменяем значение на 2
o.p = 3; // меняем значение на 3
deleteo.p; // удаляем значение
o.p = 4;
o.unwatch(‘p’);// вызов метода unwatch() для прекращения отслеживания свойства p
o.p = 5; // меняем значение p, но на экран ничего не выводится
Вывод:
o.p changed from 1 to 2
o.p changed from 2 to 3
o.p changed from undefined to 4
События для Select
Для Select’а существуют такие обработчики событий: onBlur, onChange и onFocus:
- OnBlur производит запуск кода тогда, когда фокус теряется окном.
- OnChange запускает код, если изменяется значение окна выбора.
- OnFocusже код запускает, когда окно выбора получает фокус.
Практическое применение событий
Применение события «change»:
<div id=»selection»></div>
<script>
var languagesSelect = CurForm.language; // элемент “select” с формыCurForm и именем “language”
function changeOption(){
var selection = document.getElementById(«selection»);
var selectedOption = languagesSelect.options[languagesSelect.selectedIndex];
selection.textContent = «Вы выбрали: » + selectedOption.text;
}
languagesSelect.addEventListener(«change», changeOption);// добавление события change
</script>
Использование событий Focus и Blur
<style>
.invalid { border-color: red; }
#error { color: red }
</style>
Ваш email: <input type=»email» id=»input»>
<div id=»error»></div>
<script>
input.onblur = function() {
if (!input.value.includes(‘@’)) { // не email
input.classList.add(‘invalid’);
error.innerHTML = ‘Пожалуйста, введите правильный email.’
}
};
input.onfocus = function() {
if (this.classList.contains(‘invalid’)) {
// удаляем индикатор ошибки, т.к. пользователь хочет ввести данные заново
this.classList.remove(‘invalid’);
error.innerHTML = «»;
}
};
</script>
Примеры использования select
Создание select в функции
<script>
function myFunction() {
var x = document.createElement(«SELECT»);
x.setAttribute(«id», «mySelect»);
document.body.appendChild(x);var z = document.createElement(«option»);
z.setAttribute(«value», «volvocar»);
var t = document.createTextNode(«Volvo»);
z.appendChild(t);
document.getElementById(«mySelect»).appendChild(z);
}
</script>
Сдвиг элемента списка вверх или вниз
function shiftUpOption (oListbox, iIndex)
{
if (iIndex> 0)
{
var oOption = oListbox.options[iIndex];
var oPrevOption = oListbox.options[iIndex-1];
oListbox.insertBefore(oOption, oPrevOption);
}
};function shiftDownOption (oListbox, iIndex)
{
if (iIndex<oListbox.options.length — 1)
{
var oOption = oListbox.options[iIndex];
var oNextOption = oListbox.options[iIndex+1];
oListbox.insertBefore(oNextOption, oOption);
}
};
Вызов функции
var objSel = document.getElementById(«mySelect»);
shiftDownOption (objSel, 1); //переместить второй элемент списка (с индексом 1) на первую позицию (с индексом 0)