摘要:為了便于訪問,對象添加了下列屬性當前項在集合中的索引當前選項的標簽,等價于中的標簽布爾值,表示當前選項是否被選中。
選擇框通過select和option元素創建的。除了共有的屬性和方法外,下面的是特有的屬性和方法:
add(newOption,relativeOption): 向控件中插入新
multiple: 布爾值,表示是否允許多項選擇,等價于HTML的multiple特性
options: 控件中所有
remove(index): 移除給定位置的選項
selectedIndex: 基于0的選中項的索引,如果沒有選中項的索引,則值為“-1”
size: 選擇框中的可見行數,等價于HTML的size特性
如(舊方法,新方法在后面):
var selection = document.getElementById("cars"); var addOption = document.getElementById("addOption"); selection.selectedIndex = -1; //已選擇的項目-1為不選;0為第一個 //添加新選項 addOption.addEventListener("click", function() { var newOption = document.createElement("option"); newOption.value = "swift"; newOption.class = "swift"; newOption.appendChild(document.createTextNode("swift")); selection.add(newOption, selection.options[selection.options.length]); //add()方法添加 .options表示控件中所有的選項 addOption.disabled = true; }); //設置為多項選擇 var multiple = document.getElementById("multiple"); multiple.addEventListener("click", function() { selection.multiple = true; //multiple表示是否為多選 selection.size = 2; //size表示可見的行數 }); //刪除選項 var deleteOption = document.getElementById("delete"); deleteOption.addEventListener("click", function() { selection.remove(0); //remove()方法接收index if (selection.options.length < 1) { var newOption = document.createElement("option"); newOption.value = "none"; newOption.class = "none"; newOption.appendChild(document.createTextNode("none")); selection.add(newOption, selection.options[selection.options.length]); selection.disabled = true; } }); //獲得選項的值 var output = document.getElementById("output"); selection.addEventListener("change", function () { output.firstChild.nodeValue = "Cars: " + selection.value; });
需要注意,選擇框type屬性不是“select-one”就是“select-multiple”,這取決于HTML代碼中有無multiple特性。
另外,value屬性規則如下:
沒有選中:value為空字符串;
選擇一個,value特性在HTML中指定:value為指定的值;
選擇一個,value特性在HTML中未指定:value為該選項的文本;
選擇多個,依據前兩條規則取得第一個選中項的值;
在DOM中,每個
index:當前項在option集合中的索引
label:當前選項的標簽,等價于HTML中的label標簽
selected:布爾值,表示當前選項是否被選中。將這個屬性設置為true可以選中當前選項
text:選項的文本
value:選項的值,等價于HTML的value特性。
如:
var text = selection.options[0].text; //獲取選項的文本 var text = selection.options[0].value; //獲取選項的值選擇的項 selectedIndex屬性
對于只能選擇一項的選項,訪問選中項的方式是使用選擇框的selectedIndex屬性。對于多選項,selectedIndex只返回第一項的索引值。
var selectedOption = selection.options[selection.selectedIndex]
如:
var output = document.getElementById("output"); selection.addEventListener("change", function () { output.firstChild.nodeValue = "Value: " + selection.options[selection.selectedIndex].value + "; Index: " + selection.selectedIndex + "; Text: " + selection.options[selection.selectedIndex].text; });
或者凍結,只能選擇某個選項
selection.addEventListener("change", function () { output.firstChild.nodeValue = selection.options[0].selected = true; });selected屬性
多選的情況下可以設置多個選項的selected屬性為true:
selection.multiple = true; selection.options[0].selected = true; selection.options[2].selected = true;
可以遍歷所有的選中項:
function getSelectedOptions(selectbox) { var result = []; var option = null; for (var i = 0; i < selectbox.options.length; i++) { if (selectbox.options[i].selected) { result.push(selectbox.options[i]); } } return result; } var list = getSelectedOptions(selection); list.forEach( function(element, index) { console.log(element.value); //log所有被選中的選項 });添加選項 DOM方法
第一種方法DOM方法:
var selection = document.getElementById("cars"); var newOption = document.createElement("option"); newOption.appendChild(document.createTextNode("Option text")); newOption.value = "Option value"; selection.appendChild(newOption);Option構造函數方法(IE中有bug)
第二種方法Option構造函數(接收兩個參數:text,value):
var selection = document.getElementById("cars"); var newOption = new Option("Option text","Option value"); selection.appendChild(newOption); //這里可以用appendChild來添加,但在IE8及以前會出現問題add()方法(推薦!)
第三種方法使用add函數(接收兩個參數:新選項,位于新選項最后的選項;如果要插入成為最后的選項,第二個參數應該設置為undefined):
var selection = document.getElementById("cars"); var newOption = new Option("Option text","Option value"); selection.add(newOption,undefined); //第二個參數說明最新的option放在最后
如果要添加到別處,應當使用DOM方法和insertBefore();
移除選項第一種方法DOM方法(利用removeChild方法):
selection.removeChild(selection.options[0]);
第二種方法用選擇框的remove方法:
selection.remove(0); //移除第一個
第三種為設置null:
selection.options[0] = null;
或者刪除所有的選項(要注意:由于移除第一個選項后,所有后續選項都會自動向上移動一個位置,所以重復刪除第一個選項就可以刪除所有選項了。for循環內部需要把i替換成0):
var selection = document.getElementById("cars"); for (var i = 0, len = selection.options.length; i < len; i++) { selection.removeChild(selection.options[0]); // selection.remove(0); // selection.options[0] = null; };
也有網友說用innerHTML更方便;
移動和重排選項移動選項用appendChild()方法:
var selection = document.getElementById("cars"); var selection2 = document.getElementById("cars2"); selection2.appendChild(selection.options[0]);
比如說讓某個選項從一個選擇框中移動到另一個選擇框中:
var selection = document.getElementById("cars"); var selection2 = document.getElementById("cars2"); var transfer = document.getElementById("transfer"); transfer.addEventListener("click", function() { var selectedOptions = []; for (var i = 0, len = selection.options.length; i < len; i++) { if (selection.options[i].selected) { selectedOptions.push(selection.options[i]); } }; for (var i = 0; i < selectedOptions.length; i++) { selection2.appendChild(selectedOptions[i]); } });
重排序則需要利用到insertBefore()方法;
如果要讓某個選項向上移動一格則:
var selection = document.getElementById("cars"); selection.insertBefore(selection.options[1],selection.options[0]);
或者按按鈕讓某個選項向上移動:
var selection = document.getElementById("cars"); var moveOptions = document.getElementById("transfer"); moveOptions.addEventListener("click", function() { for (var i = 0, len = selection.options.length; i < len; i++) { //如果這個選項被選中了,并且這個選項不是第一個 if ((selection.options[i].selected) && (selection.options[i] != selection.options[0]) ) { //則選擇的選項插入到前面的選項的前面 selection.insertBefore(selection.options[i], selection.options[i - 1]); } }; });
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/78577.html
表單腳本 表單的基礎知識 HTMLFormElement有自己獨特的屬性和方法 acceptCharset,服務器能夠處理的字符集,等價于HTML中的accept-charset特性 action,接受請求的URL,等價于HTML中的action特性 elements,表單中所有控件的集合 enctype,請求的編碼類型,等價于HTML中的enctype特性 length,表單中控件的數量 m...
摘要:布爾值,表示當前字段是否被禁用。指向當前字段所屬表單的指針只讀。文本框腳本在中,有兩種方式來表現文本框一種是使用元素的單行文本框,另一種是使用的多行文本框。然后,我們把這個函數指定為每個文本框的事件處理程序。 本章知識架構 showImg(https://segmentfault.com/img/bVbvCTV?w=921&h=713); var EventUtil = { /...
摘要:瀏覽器如何將數據發送給服務器對表單字段的名稱和值進行編碼,使用和號分隔不發送禁用的表單字段只發送勾選的復選框和單選按鈕不發送為和的按鈕多選框中每個選中的值單獨一個條目在單擊提交按鈕提交表單的情況下,也會發送提交按鈕。否則不發送提交按鈕。 瀏覽器如何將數據發送給服務器: 對表單字段的名稱和值進行URL編碼,使用和號(&)分隔 不發送禁用的表單字段 只發送勾選的復選框和單選按鈕 不發送t...
摘要:處理表格和提交等等重置表單重置表單應該使用或當用戶單擊重置按鈕重置表單時,會觸發事件,可以在必要的時候取消重置操作另外也可以通過腳本調用方法重置表單,在調用方法重置表單時會觸發事件。在中,表單中新增加了屬性,自動把焦點移動到相應字段。 HTMLFormElement繼承了HTMLElement,它自己獨有的屬性和方法有: acceptCharset:服務器能夠處理的字符集,等價于HT...
閱讀 916·2023-04-25 18:51
閱讀 1867·2021-09-09 11:39
閱讀 3281·2019-08-30 15:53
閱讀 2096·2019-08-30 13:03
閱讀 1308·2019-08-29 16:17
閱讀 577·2019-08-29 11:33
閱讀 1883·2019-08-26 14:00
閱讀 2123·2019-08-26 13:41