日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Javascript - Select操作大集合

發(fā)布時間:2025/3/21 java 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Javascript - Select操作大集合 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

1、向Select里添加Option

function?fnAddItem(text,value)
????????
{
????????????
var?selTarget?=?document.getElementById("selID");

????????????selTarget.Add(
new?Option("text","value"));
????????}

2、刪除Select里的Option

function?fnRemoveItem()
????????
{
????????????
var?selTarget?=?document.getElementById("selID");

????????????
if(selTarget.selectedIndex?>?-1)?
????????????
{//說明選中
????????????????for(var?i=0;i<selTarget.options.length;i++)
????????????????
{
????????????????????
if(selTarget.options[i].selected)
????????????????????
{
????????????????????????selTarget.remove(i);
????????????????????????
????????????????????????i?
=?i?-?1;//注意這一行
????????????????????}

????????????????}

????????????}

????????}
?

3、移動Select里的Option到另一個Select中

????????function?fnMove(fromSelectID,toSelectID)
????????
{
????????????
var?from?=?document.getElementById(fromSelectID);
????????????
var?to?=?document.getElementById(toSelectID);
????????????
????????????
for(var?i=0;i<from.options.length;i++)
????????????
{
????????????????
if(from.options[i].selected)
????????????????
{
????????????????????to.appendChild(from.options[i]);
????????????????????i?
=?i?-?1;
????????????????}

????????????}

????????}
???? if 里的代碼也可用下面幾句代碼代替
??var?op?=?from.options[i];
??to.options.add(
new?Option(op.text,?op.value));
??from.remove(i);

4、Select里Option的上下移動

????????function?fnUp()
????????
{???
????????????
var?sel?=?document.getElementById("selID");
????????????
for(var?i=1;?i?<?sel.length;?i++)
????????????
{//最上面的一個不需要移動,所以直接從i=1開始
????????????????if(sel.options[i].selected)
????????????????
{
????????????????????
if(!sel.options.item(i-1).selected)
????????????????????
{//上面的一項沒選中,上下交換
??????????????????????????var?selText?=?sel.options[i].text;
??????????????????????????
var?selValue?=?sel.options[i].value;
??????????????????????????
??????????????????????????sel.options[i].text?
=?sel.options[i-1].text;
??????????????????????????sel.options[i].value?
=?sel.options[i-1].value;
??????????????????????????sel.options[i].selected?
=?false;
??????????????????????????
??????????????????????????sel.options[i
-1].text?=?selText;
??????????????????????????sel.options[i
-1].value?=?selValue;
??????????????????????????sel.options[i
-1].selected=true;
????????????????????}

????????????????}

????????????}

????????}
在進行上下兩項互換時,也可以使用以下代碼,但是效率很低,因為每一次的Dom操作都將導致整個頁面的重新布局,所以不如直接修改元素的屬性值。
????????????????????????var?oOption?=?sel.options[i]
????????????????????????
var?oPrevOption?=?sel.options[i-1]
????????????????????????sel.insertBefore(oOption,oPrevOption);
向下移動同理
function?fnDown()
????????
{
????????????
var?sel?=?fnGetTarget("selLeftOrRight");
????????????
for(var?i=sel.length?-2;?i?>=?0;?i--)
????????????
{//向下移動,最后一個不需要處理,所以直接從倒數(shù)第二個開始
????????????????if(sel.options.item(i).selected)
????????????????
{
????????????????????
if(!sel.options.item(i+1).selected)
????????????????????
{//下面的Option沒選中,上下互換
??????????????????????????var?selText?=?sel.options.item(i).text;
??????????????????????????
var?selValue?=?sel.options.item(i).value;
??????????????????????????
??????????????????????????sel.options.item(i).text?
=?sel.options.item(i+1).text;
??????????????????????????sel.options.item(i).value?
=?sel.options.item(i+1).value;
??????????????????????????sel.options.item(i).selected?
=?false;
??????????????????????????
??????????????????????????sel.options.item(i
+1).text?=?selText;
??????????????????????????sel.options.item(i
+1).value?=?selValue;
??????????????????????????sel.options.item(i
+1).selected=true;
????????????????????}

????????????????}

????????????}

????????}

5、Select里Option的排序

這里借助Array對象的sort方法進行操作,sort方法接受一個function參數(shù),可以在這個function里定義排序時使用的算法邏輯。
array.sort([compareFunction]) 里compareFunction接受兩個參數(shù)(p1,p2),sort操作進行時,array對象會每次傳兩個值進去,進行比較;compareFunciton必須返回一個整數(shù)值:當返回值>0時,p1會排在p2后面;返回值<0時,p1會排在p2前面;返回值=0時,不進行操作。
例如:
function?fnCompare(a,b)
????????
{
????????????
if?(a?<?b)
????????????????
return?-1;
????????????
if?(a?>?b)
????????????????
return?1;
????????????
return?0;
????????}

var?arr?=?new?Array();
//add?some?value?into?arr
arr.sort(fnCompare);
//這里sort的操作結(jié)果就是arr里的項按由小到大的升序排序
//
如果把fnCompare里改為
//
if?(a?<?b)
//
??return?1;
//
if?(a?>?b)
//
??return?-1;
//
return?0;
//
則sort的結(jié)果是降序排列
好,下面就是對Select里Option的排序
//因為排序可以按Option的Value排序,也可以按Text排序,這里只演示按Value排序
function?sortItem()
{
????
var?sel?=?document.getElementById("selID");
????
var?selLength?=?sel.options.length;
????
var?arr?=?new?Array();
????
var?arrLength;

????
//將所有Option放入array
????for(var?i=0;i<selLength;i++)
????
{
????????arr[i]?
=?sel.options[i];
????}

????arrLength?
=?arr.length;

????arr.sort(fnSortByValue);
//排序
????//先將原先的Option刪除
????while(selLength--)
????
{
????????sel.options[selLength]?
=?null;
????}

????
//將經(jīng)過排序的Option放回Select中
????for(i=0;i<arrLength;i++)
????
{
????????sel.add(
new?Option(arr[i].text,arr[i].value));
????}

}

function?fnSortByValue(a,b)
{
????
var?aComp?=?a.value.toString();
????
var?bComp?=?b.value.toString();

????
if?(aComp?<?bComp)
????????
return?-1;
????
if?(aComp?>?bComp)
????????
return?1;
????
return?0;
}

排序時還可以有更多選項,比如將value值看做Integer或是String進行排序,得到的結(jié)果是不一樣的。篇幅限制,不在多做介紹。
我將這些所有的操作都寫在了一個文件里,運行的效果如圖(點擊看大圖)


有興趣的朋友可以下載來看看,里面還設(shè)計div+css排版等。

?

----------[?JavaScript?]----------

Download


from:?http://blog.csdn.net/jinshi_cn/article/details/2419720

總結(jié)

以上是生活随笔為你收集整理的Javascript - Select操作大集合的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。