成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

JavaScript 表單腳本——“選擇框腳本”的注意要點(diǎn)

vvpvvp / 1779人閱讀

摘要:為了便于訪問,對(duì)象添加了下列屬性當(dāng)前項(xiàng)在集合中的索引當(dāng)前選項(xiàng)的標(biāo)簽,等價(jià)于中的標(biāo)簽布爾值,表示當(dāng)前選項(xiàng)是否被選中。

選擇框通過selectoption元素創(chuàng)建的。除了共有的屬性和方法外,下面的是特有的屬性和方法:

add(newOption,relativeOption): 向控件中插入新

multiple: 布爾值,表示是否允許多項(xiàng)選擇,等價(jià)于HTML的multiple特性

options: 控件中所有

remove(index): 移除給定位置的選項(xiàng)

selectedIndex: 基于0的選中項(xiàng)的索引,如果沒有選中項(xiàng)的索引,則值為“-1”

size: 選擇框中的可見行數(shù),等價(jià)于HTML的size特性

如(舊方法,新方法在后面):

var selection = document.getElementById("cars");
var addOption = document.getElementById("addOption");
selection.selectedIndex = -1; //已選擇的項(xiàng)目-1為不選;0為第一個(gè)
//添加新選項(xiàng)
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表示控件中所有的選項(xiàng)
    addOption.disabled = true;
});
//設(shè)置為多項(xiàng)選擇
var multiple = document.getElementById("multiple");
multiple.addEventListener("click", function() {
    selection.multiple = true; //multiple表示是否為多選
    selection.size = 2; //size表示可見的行數(shù)
});
//刪除選項(xiàng)
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;
    }
});
//獲得選項(xiàng)的值
var output = document.getElementById("output");
selection.addEventListener("change", function () {
    output.firstChild.nodeValue = "Cars: " + selection.value;
});

需要注意,選擇框type屬性不是“select-one”就是“select-multiple”,這取決于HTML代碼中有無multiple特性。

另外,value屬性規(guī)則如下:

沒有選中:value為空字符串;

選擇一個(gè),value特性在HTML中指定:value為指定的值;

選擇一個(gè),value特性在HTML中未指定:value為該選項(xiàng)的文本;

選擇多個(gè),依據(jù)前兩條規(guī)則取得第一個(gè)選中項(xiàng)的值;

在DOM中,每個(gè)

index:當(dāng)前項(xiàng)在option集合中的索引

label:當(dāng)前選項(xiàng)的標(biāo)簽,等價(jià)于HTML中的label標(biāo)簽

selected:布爾值,表示當(dāng)前選項(xiàng)是否被選中。將這個(gè)屬性設(shè)置為true可以選中當(dāng)前選項(xiàng)

text:選項(xiàng)的文本

value:選項(xiàng)的值,等價(jià)于HTML的value特性。

如:

var text = selection.options[0].text; //獲取選項(xiàng)的文本
var text = selection.options[0].value; //獲取選項(xiàng)的值
選擇的項(xiàng) selectedIndex屬性

對(duì)于只能選擇一項(xiàng)的選項(xiàng),訪問選中項(xiàng)的方式是使用選擇框的selectedIndex屬性。對(duì)于多選項(xiàng),selectedIndex只返回第一項(xiàng)的索引值。

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;
});

或者凍結(jié),只能選擇某個(gè)選項(xiàng)

selection.addEventListener("change", function () {
    output.firstChild.nodeValue = selection.options[0].selected = true;
});
selected屬性

多選的情況下可以設(shè)置多個(gè)選項(xiàng)的selected屬性為true:

selection.multiple = true;
selection.options[0].selected = true;
selection.options[2].selected = true;

可以遍歷所有的選中項(xiàng):

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所有被選中的選項(xiàng)
});
添加選項(xiàng) 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構(gòu)造函數(shù)方法(IE中有bug)

第二種方法Option構(gòu)造函數(shù)(接收兩個(gè)參數(shù):text,value):

var selection = document.getElementById("cars");
var newOption = new Option("Option text","Option value");
selection.appendChild(newOption); //這里可以用appendChild來添加,但在IE8及以前會(huì)出現(xiàn)問題
add()方法(推薦!)

第三種方法使用add函數(shù)(接收兩個(gè)參數(shù):新選項(xiàng),位于新選項(xiàng)最后的選項(xiàng);如果要插入成為最后的選項(xiàng),第二個(gè)參數(shù)應(yīng)該設(shè)置為undefined):

var selection = document.getElementById("cars");
var newOption = new Option("Option text","Option value");
selection.add(newOption,undefined); //第二個(gè)參數(shù)說明最新的option放在最后

如果要添加到別處,應(yīng)當(dāng)使用DOM方法和insertBefore();

移除選項(xiàng)

第一種方法DOM方法(利用removeChild方法):

selection.removeChild(selection.options[0]);

第二種方法用選擇框的remove方法:

selection.remove(0); //移除第一個(gè)

第三種為設(shè)置null:

selection.options[0] = null;

或者刪除所有的選項(xiàng)(要注意:由于移除第一個(gè)選項(xiàng)后,所有后續(xù)選項(xiàng)都會(huì)自動(dòng)向上移動(dòng)一個(gè)位置,所以重復(fù)刪除第一個(gè)選項(xiàng)就可以刪除所有選項(xiàng)了。for循環(huán)內(nèi)部需要把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;
};

也有網(wǎng)友說用innerHTML更方便;

移動(dòng)和重排選項(xiàng)

移動(dòng)選項(xiàng)用appendChild()方法:

var selection = document.getElementById("cars");
var selection2 = document.getElementById("cars2");
selection2.appendChild(selection.options[0]);

比如說讓某個(gè)選項(xiàng)從一個(gè)選擇框中移動(dòng)到另一個(gè)選擇框中:

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()方法;

如果要讓某個(gè)選項(xiàng)向上移動(dòng)一格則:

var selection = document.getElementById("cars");
selection.insertBefore(selection.options[1],selection.options[0]);

或者按按鈕讓某個(gè)選項(xiàng)向上移動(dòng):

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++) {
        //如果這個(gè)選項(xiàng)被選中了,并且這個(gè)選項(xiàng)不是第一個(gè)
        if ((selection.options[i].selected) && (selection.options[i] != selection.options[0]) ) {
            //則選擇的選項(xiàng)插入到前面的選項(xiàng)的前面
            selection.insertBefore(selection.options[i], selection.options[i - 1]);
        }
    };
});

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/78577.html

相關(guān)文章

  • 表單腳本

    摘要:文本框腳本有兩種方式表現(xiàn)文本框的單行文本框和的多行文本框。對(duì)于單行文本框,通過特性可以指定文本框能夠顯示的字符數(shù),通過特性訪問其內(nèi)容,而則用于指定其可以接受的最大字符數(shù)。 title: 表單腳本 date: 2016-12-19 15:17 tags: JavaScript 0x00 表單基礎(chǔ) 在 HTML 中,表單由 元素來表示,但是在 JavaScript 中,表單對(duì)應(yīng)...

    stormgens 評(píng)論0 收藏0
  • 高程3總結(jié)#第14章表單腳本

    表單腳本 表單的基礎(chǔ)知識(shí) HTMLFormElement有自己獨(dú)特的屬性和方法 acceptCharset,服務(wù)器能夠處理的字符集,等價(jià)于HTML中的accept-charset特性 action,接受請(qǐng)求的URL,等價(jià)于HTML中的action特性 elements,表單中所有控件的集合 enctype,請(qǐng)求的編碼類型,等價(jià)于HTML中的enctype特性 length,表單中控件的數(shù)量 m...

    Tony 評(píng)論0 收藏0
  • JS學(xué)習(xí)筆記(第14章)(表單腳本

    摘要:布爾值,表示當(dāng)前字段是否被禁用。指向當(dāng)前字段所屬表單的指針只讀。文本框腳本在中,有兩種方式來表現(xiàn)文本框一種是使用元素的單行文本框,另一種是使用的多行文本框。然后,我們把這個(gè)函數(shù)指定為每個(gè)文本框的事件處理程序。 本章知識(shí)架構(gòu) showImg(https://segmentfault.com/img/bVbvCTV?w=921&h=713); var EventUtil = { /...

    BlackHole1 評(píng)論0 收藏0
  • JavaScript 表單腳本——“表單序列化”注意要點(diǎn)

    摘要:瀏覽器如何將數(shù)據(jù)發(fā)送給服務(wù)器對(duì)表單字段的名稱和值進(jìn)行編碼,使用和號(hào)分隔不發(fā)送禁用的表單字段只發(fā)送勾選的復(fù)選框和單選按鈕不發(fā)送為和的按鈕多選框中每個(gè)選中的值單獨(dú)一個(gè)條目在單擊提交按鈕提交表單的情況下,也會(huì)發(fā)送提交按鈕。否則不發(fā)送提交按鈕。 瀏覽器如何將數(shù)據(jù)發(fā)送給服務(wù)器: 對(duì)表單字段的名稱和值進(jìn)行URL編碼,使用和號(hào)(&)分隔 不發(fā)送禁用的表單字段 只發(fā)送勾選的復(fù)選框和單選按鈕 不發(fā)送t...

    BlackHole1 評(píng)論0 收藏0
  • JavaScript 表單腳本——“表單基礎(chǔ)知識(shí)”注意要點(diǎn)

    摘要:處理表格和提交等等重置表單重置表單應(yīng)該使用或當(dāng)用戶單擊重置按鈕重置表單時(shí),會(huì)觸發(fā)事件,可以在必要的時(shí)候取消重置操作另外也可以通過腳本調(diào)用方法重置表單,在調(diào)用方法重置表單時(shí)會(huì)觸發(fā)事件。在中,表單中新增加了屬性,自動(dòng)把焦點(diǎn)移動(dòng)到相應(yīng)字段。 HTMLFormElement繼承了HTMLElement,它自己獨(dú)有的屬性和方法有: acceptCharset:服務(wù)器能夠處理的字符集,等價(jià)于HT...

    chnmagnus 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<