这篇文章,主要是关于javascript和select相关的最基本方法
下面是我们例子的基础;这不是一个标准的表单。
<
form
id
="f"
>
<
select
size
="1"
name
="s"
>
<
option
value
="lizi.name"
>
梨子面馆
</
option
>
<
option
value
="baidu.com"
>
百度
</
option
>
</
select
>
</
form
>
---------------------------------------------------------------------------
<
script type
=
"
text/javascript
"
>
<!--
var
f
=
document.getElementById(
"
f
"
);

//
获得select列表项数目
document.write(f.s.options.length);
document.write(f.s.length);

//
当前选中项的下标(从0 开始)(有两种方法)
//
如果选择了多项,则返回第一个选中项的下标
document.write(f.s.options.selectedIndex);
document.write(f.s.selectedIndex);

//
检测某一项是否被选中
document.write(f.s.options[
0
].selected);

//
获得某一项的值和文字
document.write(f.s.options[
0
].value);
document.write(f.s.options[
1
].text);

//
删除某一项
f.s.options[
1
]
=
null
;

//
追加一项
f.s.options[f.s.options.length]
=
new
Option(
"
追加的text
"
,
"
追加的value
"
);

//
更改一项
f.s.options[
1
]
=
new
Option(
"
更改的text
"
,
"
更改的value
"
);
//
也可以直接设置该项的 text 和 value
//
-->
</
script
>


//
全选列表中的项
function
SelectAllOption(list)

...
{
for (var i=0; i<list.options.length; i++)

...{
list.options[i].selected = true;
}
}


//
反选列表中的项
function
DeSelectOptions(list)

...
{
for (var i=0; i<list.options.length; i++)

...{
list.options[i].selected = !list.options[i].selected;
}
}


//
返回列表中选择项数目
function
GetSelectedOptionsCnt(list)

...
{
var cnt = 0;
var i = 0;
for (i=0; i<list.options.length; i++)

...{
if (list.options[i].selected)

...{
cnt++;
}
}

return cnt;
}


//
清空列表
function
ClearList(list)

...
{
while (list.options.length > 0)

...{
list.options[0] = null;
}
}


//
删除列表选中项
//
返回删除项的数量
function
DelSelectedOptions(list)

...
{
var i = 0;
var deletedCnt = 0;
while (i < list.options.length)

...{
if (list.options[i].selected)

...{
list.options[i] = null;
deletedCnt++;
}
else

...{
i++;
}
}

return deletedCnt;
}
//
此函数查找相应的项是否存在
//
repeatCheck是否进行重复性检查
//
若为"v",按值进行重复值检查
//
若为"t",按文字进行重复值检查
//
若为"vt",按值和文字进行重复值检查
//
其它值,不进行重复性检查,返回false
function
OptionExists(list, optText, optValue, repeatCheck)

...
{
var i = 0;
var find = false;

if (repeatCheck == "v")

...{
//按值进行重复值检查
for (i=0; i<list.options.length; i++)

...{
if (list.options[i].value == optValue)

...{
find = true;
break;
}
}
}
else if (repeatCheck == "t")

...{
//按文字进行重复检查
for (i=0; i<list.options.length; i++)

...{
if (list.options[i].text == optText)

...{
find = true;
break;
}
}
}
else if (repeatCheck == "vt")

...{
//按值和文字进行重复检查
for (i=0; i<list.options.length; i++)

...{
if ((list.options[i].value == optValue) && (list.options[i].text ==

optText))

...{
find = true;
break;
}
}
}

return find;
}


//
向列表中追加一个项
//
list 是要追加的列表
//
optText 和 optValue 分别表示项的文字和值
//
repeatCheck 是否进行重复性检查,参见 OptionExists
//
添加成功返回 true,失败返回 false
function
AppendOption(list, optText, optValue, repeatCheck)

...
{
if (!OptionExists(list, optText, optValue, repeatCheck))

...{
list.options[list.options.length] = new Option(optText, optValue);
return true;
}
else

...{
return false;
}
}


//
插入项
//
index 插入位置,当插入位置 >= 列表现有项数量时,其作用相当于不进行重复检
查的追加项
//
optText 和 optValue 分别表示项的文字和值
function
InsertOption(list, index, optText, optValue)

...
{
var i = 0;
for (i=list.options.length; i>index; i--)

...{
list.options[i] = new Option(list.options[i-1].text, list.options[i-

1].value);
}

list.options[index] = new Option(optText, optValue);
}
//
将一个列表中的项导到另一个列表中
//
repeatCheck是否进行重复性检查,参见OptionExists
//
deleteSource项导到目标后,是否删除源列表中的项
//
返回影响的项数量
function
ListToList(sList, dList, repeatCheck, deleteSource)

...
{
//所影响的行数
var lines = 0;
var i = 0;
while (i<sList.options.length)

...{
if (sList.options[i].selected && AppendOption(dList, sList.options[i].text,

sList.options[i].value, repeatCheck))

...{
//添加成功
lines++;
if (deleteSource)

...{
//删除源列表中的项
sList.options[i] = null;
}
else

...{
i++;
}
}
else

...{
i++;
}
}

return lines;
}


//
列表中选中项上移
function
MoveSelectedOptionsUp(list)

...
{
var i = 0;
var value = "";
var text = "";
for (i=0; i<(list.options.length-1); i++)

...{
if (!list.options[i].selected && list.options[i+1].selected)

...{
value = list.options[i].value;
text = list.options[i].text;
list.options[i] = new Option(list.options[i+1].text, list.options

[i+1].value);
list.options[i].selected = true;
list.options[i+1] = new Option(text, value);
}
}
}


//
列表中选中项下移
function
MoveSelectedOptionsDown(list)

...
{
var i = 0;
var value = "";
var text = "";
for (i=list.options.length-1; i>0; i--)

...{


if (!list.options[i].selected && list.options[i-1].selected)

...{
value = list.options[i].value;
text = list.options[i].text;
list.options[i] = new Option(list.options[i-1].text, list.options[i-

1].value);
list.options[i].selected = true;
list.options[i-1] = new Option(text, value);
}
}
}