Javascript-Select操作大集合

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

注意:Option中的O是要大写的,不然语法报错
1.动态创建select
function createSelect(){
var mySelect = document.createElement("select");
mySelect.id = "mySelect";
document.body.appendChild(mySelect);
}
2.添加选项option
function addOption(){
//根据id查找对象,
var obj=document.getElementById('mySelect');
//添加一个选项
obj.add(new Option("文本","值"));//这个只能在IE中有效
obj.options.add(new Option("text","value")); //这个兼容IE与firefox }
3.删除所有选项option
function removeAll(){
var obj=document.getElementById('mySelect');
obj.options.length=0;
}
4.删除一个选项option
function removeOne(){
var obj=document.getElementById('mySelect');
//index,要删除选项的序号,这里取当前选中选项的序号
var index=obj.selectedIndex;
obj.options.remove(index);
}
5.获得选项option的值
var obj=document.getElementById('mySelect');
var index=obj.selectedIndex; //序号,取当前选中选项的序号
var val = obj.options[index].value;
6.获得选项option的文本
var obj=document.getElementById('mySelect');
var index=obj.selectedIndex; //序号,取当前选中选项的序号
var val = obj.options[index].text;
7.修改选项option
var obj=document.getElementById('mySelect');
var index=obj.selectedIndex; //序号,取当前选中选项的序号
var val = obj.options[index]=new Option("新文本","新值"); 8.删除select
function removeSelect(){
var mySelect = document.getElementById("mySelect");
mySelect.parentNode.removeChild(mySelect);
}
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//ZH-CN" "/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html">
<head>
<script language=JavaScript>
function $(id)
{
return document.getElementById(id)
}
function show()
{
var selectObj=$("area")
var myOption=document.createElement("option") myOption.setAttribute("value","10")
myOption.appendChild(document.createTextNode("上海"))
var myOption1=document.createElement("option") myOption1.setAttribute("value","100")
myOption1.appendChild(document.createTextNode("南京"))
selectObj.appendChild(myOption)
selectObj.appendChild(myOption1)
}
function choice()
{
var index=$("area").selectedIndex;
var val=$("area").options[index].getAttribute("value")
if(val==10)
{
var i=$("context").childNodes.length-1;
var remobj=$("context").childNodes[i];
remobj.removeNode(true)
var sh=document.createElement("select")
sh.add(new Option("浦东新区","101"))
sh.add(new Option("黄浦区","102"))
sh.add(new Option("徐汇区","103"))
sh.add(new Option("普陀区","104"))
$("context").appendChild(sh)
}
if(val==100)
{
var i=$("context").childNodes.length-1;
var remobj=$("context").childNodes[i];
remobj.removeNode(true)
var nj=document.createElement("select")
nj.add(new Option("玄武区","201"))
nj.add(new Option("白下区","202"))
nj.add(new Option("下关区","203"))
nj.add(new Option("栖霞区","204"))
$("context").appendChild(nj)
}
}
function calc()
{
var x=$("context").childNodes.length-1;
alert(x)
}
function remove()
{
var i=$("context").childNodes.length-1;
var remobj=$("context").childNodes[i];
remobj.removeNode(true)
}
</script>
<body>
<div id="context">
<select id="area" onchange="choice()">
</select>
</div>
<input type=button value="显示" onclick="show()">
<input type=button value="计算结点" onclick="calc()"> <input type=button value="删除" onclick="remove()"> </body>
</html>
改进版:在select中添加、修改、删除option元素
function watch_ini(){ // 初始
for(var i=0; i<arguments.length; i++){
var word = document.createElement("OPTION");
word.text = arguments[i];
watch.keywords.add(word); // watch. is form name
}
}
function watch_add(f){ // 增加
var word = document.createElement("OPTION");
word.text = f.word.value;
f.keywords.add(word);
}
但上述add() 方法只在IE下有效,为兼容FF和Opera,对上述代码进行了一下改进,改动后代码如下:function watch_ini(){ // 初始
for(var i=0; i<arguments.length; i++){
var oOption=new Option(arguments[i],arguments[i]);
document.getElementById("MySelect")[i]=oOption;
}
}
function watch_add(f){ // 增加
var oOption=new Option(f.word.value,f.word.value);
f.keywords[f.keywords.length]=oOption;
}
整个实例的完整代码如下:<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
<html>
<head>
<title>javascript select options text value</title>
<meta name="keywords" content="javascript select options text value add modify delete set">
<meta name="description" content="javascript select options text value add modify delete set">
<script language="javascript">
<!--
// Author: i@
// Modify: i@
function watch_ini(){ // 初始
for(var i=0; i<arguments.length; i++){
var oOption=new Option(arguments[i],arguments[i]); document.getElementById("MySelect")[i]=oOption;
}
}
function watch_add(f){ // 增加
var oOption=new Option(f.word.value,f.word.value);
f.keywords[f.keywords.length]=oOption;
}
function watch_sel(f){ // 编辑
f.word.value = f.keywords[f.keywords.selectedIndex].text;
}
function watch_mod(f){ // 修改
f.keywords[f.keywords.selectedIndex].text = f.word.value;
}
function watch_del(f){ // 删除
f.keywords.remove(f.keywords.selectedIndex);
}
function watch_set(f){ // 保存
var set = "";
for(var i=0; i<f.keywords.length; i++){
set += f.keywords[i].text + ";";
}
confirm(set);
}
//-->
</script>
</head>
<body>
<form name="watch" method="post" action="">
<select id="MySelect" name="keywords" size="10"
onchange="watch_sel(this.form)"></select><br>
<script language="javascript">
<!--
watch_ini("我","你","妳","他","她","它","尔"); // 初始关键词
//-->
</script>
<input type="text" name="word" /><br />
<input type="button" value="增加" onclick="watch_add(this.form);" />
<input type="button" value="修改" onclick="watch_mod(this.form);" />
<input type="button" value="删除" onclick="watch_del(this.form);" />
<input type="button" value="保存" onclick="watch_set(this.form);" />
</form>
</body>
</html>
Javascript-Select操作大集合
时间:2009-5-21 17:13:44 来源:互联网作者:未知
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--){//向下移动,最后一个不需要处理,所以直接从倒数第二个开始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参数,能够在这个function里定义排序时使用的算法逻辑。

array.sort([compareFunction]) 里compareFunction接受两个参数(p1,p2),sort操作进行时,array对象会每次传两个值进去,进行比较;compareFunciton必须返回一个整数值:当返回值>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 arrarr.sort(fnCompare);
//这里sort的操作结果就是arr里的项按由小到大的升序排序
//假如把fnCompare里改为
//if (a < b)
//return 1;
//if (a > b)
//return -1;
//return 0;
//则sort的结果是降序排列
好,下面就是对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;}//将经过排序的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进行排序,得到的结果是不一样的。

篇幅限制,不在多做介绍。

我将这些所有的操作都写在了一个文件里,运行的效果如图
html select的事件
事件
onactivate
当对象设置为活动元素时触发。

onafterupdate 当成功更新数据源对象中的关联对象后在数据绑定对象上触发。

onbeforeactivate 对象要被设置为当前元素前立即触发。

onbeforecut 当选中区从文档中删除之前在源对象触发。

onbeforedeactivate 在activeElement 从当前对象变为父文档其它对象之前立即触发。

onbeforeeditfocus 在包含于可编辑元素内的对象进入用户界面激活状态前或可编辑容器变成控件选中区前触发。

onbeforepaste 在选中区从系统剪贴板粘贴到文档前在目标对象上触发。

onbeforeupdate 当成功更新数据源对象中的关联对象前在数据绑定对象上触发。

onblur 在对象失去输入焦点时触发。

onchange 当对象或选中区的内容改变时触发。

onclick 在用户用鼠标左键单击对象时触发。

oncontextmenu 在用户使用鼠标右键单击客户区打开上下文菜单时触发。

oncontrolselect 当用户将要对该对象制作一个控件选中区时触发。

oncut 当对象或选中区从文档中删除并添加到系统剪贴板上时在源元素上触发。

ondblclick 当用户双击对象时触发。

ondeactivate 当activeElement 从当前对象变为父文档其它对象时触发。

ondragenter 当用户拖曳对象到一个合法拖曳目标时在目标元素上触发。

ondragleave 当用户在拖曳操作过程中将鼠标移出合法拖曳目标时在目标对象上触发。

ondragover 当用户拖曳对象划过合法拖曳目标时持续在目标元素上触发。

ondrop 当鼠标按钮在拖曳操作过程中释放时在目标对象上触发。

onerrorupdate 更新数据源对象中的关联数据出错时在数据绑定对象上触发。

onfocus 当对象获得焦点时触发。

onfocusin 当元素将要被设置为焦点之前触发。

onfocusout 在移动焦点到其它元素之后立即触发于当前拥有焦点的元素上触发。

onhelp 当用户在浏览器为当前窗口时按F1 键时触发。

onkeydown 当用户按下键盘按键时触发。

onkeypress 当用户按下字面键时触发。

onkeyup 当用户释放键盘按键时触发。

onlosecapture 当对象失去鼠标捕捉时触发。

onmousedown 当用户用任何鼠标按钮单击对象时触发。

onmouseenter 当用户将鼠标指针移动到对象内时触发。

onmouseleave 当用户将鼠标指针移出对象边界时触发。

onmousemove 当用户将鼠标划过对象时触发。

onmouseout 当用户将鼠标指针移出对象边界时触发。

onmouseover 当用户将鼠标指针移动到对象内时触发。

onmouseup 当用户在鼠标位于对象之上时释放鼠标按钮时触发。

onmousewheel 当鼠标滚轮按钮旋转时触发。

onmove 当对象移动时触发。

onmoveend 当对象停止移动时触发。

onmovestart 当对象开始移动时触发。

onpaste 当用户粘贴数据以便从系统剪贴板向文档传送数据时在目标对象上触发。

onpropertychange 当在对象上发生对象上发生属性更改时触发。

onreadystatechange 当对象状态变更时触发。

onresize 当对象的大小将要改变时触发。

onresizeend 当用户更改完控件选中区中对象的尺寸时触发。

onresizestart 当用户开始更改控件选中区中对象的尺寸时触发。

onselectstart 对象将要被选中时触发。

方法
add 向areas, controlRange 或options 集合中添加一个元素。

addBehavior 给元素附加一个行为。

applyElement 使得元素成为其它元素的子元素或父元素。

attachEvent 将指定函数绑定到事件,以便每当该事件在对象上触发时都调用该函数。

blur 使元素失去焦点并触发onblur 事件。

clearAttributes 从对象中删除全部标签属性和值。

click 触发onclick 事件来模拟单击。

cloneNode 从文档层次中复制对对象的引用。

componentFromPoint 通过特定事件返回对象在指定坐标下的位置。

contains 检查对象中是否包含给定元素。

detachEvent 从事件中取消指定函数的绑定,这样当事件触发时函数就不会收到通知了。

dragDrop 初始化拖曳事件。

fireEvent 触发对象的指定事件。

focus 使得元素得到焦点并执行由onfocus 事件指定的代码。

getAdjacentText 返回邻接文本字符串。

getAttribute 获取指定标签属性的值。

getAttributeNode 获取由 属性引用的attribute 对象。

getBoundingClientRect 获取指定TextRectangle 对象集合绑定的对象。

getClientRects 获取描述对象内容或客户区内布局的矩形集合。

每个矩形都描述了一条直线。

getElementsByTagName 获取基于指定元素名称的对象集合。

getexpression_r 获取给定属性的表达式。

hasChildNodes 返回表明对象是否有子对象的值。

insertAdjacentElement 在指定位置插入元素。

insertAdjacentHTML 在指定位置的元素中插入给定的HTML 文本。

insertAdjacentText 在指定位置插入给定的文本。

insertBefore 在文档层次中插入元素。

mergeAttributes 复制所有读/写标签属性到指定元素。

normalize 合并邻接TextNode 对象以便生成一个常规的文档对象模型。

releaseCapture 释放当前文档中对象的鼠标捕捉。

remove 从集合中删除一个元素。

removeAttribute 删除对象的给定标签属性。

removeAttributeNode 从对象中删除删除attribute 对象。

removeBehavior 分离元素的行为。

removeChild 从元素上删除子结点。

removeexpression_r 从指定属性中删除表达式。

removeNode 从文档层次中删除对象。

replaceAdjacentText 替换元素的邻接文本。

replaceChild 用新的子元素替换已有的子元素。

replaceNode 用其它元素替换对象。

scrollIntoView 将对象滚动到可见范围内,将其排列到窗口顶部或底部。

setActive 设置对象为当前对象而不将对象置为焦点。

setAttribute 设置指定标签属性的值。

setAttributeNode 设置attribute 对象为对象的一部分。

setCapture 设置属于当前文档的对象的鼠标捕捉。

setexpression_r 设置指定对象的表达式。

swapNode 交换文档层次中两个对象的位置。

urns 获取附加了指定行为的全部对象的集合。

属性
ACCESSKEY accessKey 设置或获取对象的快捷键。

ALIGN align 设置或获取对象针对其邻接文本如何排列。

ATOMICSELECTION 指定元素及其内容是否可以一不可见单位统一选择。

canHaveChildren 获取表明对象是否可以包含子对象的值。

canHaveHTML 获取表明对象是否可以包含丰富的HTML 标签的值。

CLASS className 设置或获取对象的类。

clientHeight 获取对象的高度,不计算任何边距、边框、滚动条或可能应用到该对象的补白。

clientLeft 获取offsetLeft 属性和客户区域的实际左边之间的距离。

clientTop 获取offsetTop 属性和客户区域的实际顶端之间的距离。

clientWidth 获取对象的宽度,不计算任何边距、边框、滚动条或可能应用到该对象的补白。

DATAFLD dataFld 设置或获取由dataSrc 属性指定的绑定到指定对象的给定数据源的字段。

DATASRC dataSrc 设置或获取用于数据绑定的数据源。

DIR dir 设置或获取对象的阅读顺序。

disabled 获取表明用户是否可与该对象交互的值。

DISABLED disabled 设置或获取控件的状态。

firstChild 获取对象的childNodes 集合的第一个子对象的引用。

form 获取对象所在表单的引用。

HIDEFOCUS hideFocus 设置或获取表明对象是否显式标明焦点的值。

ID id 获取标识对象的字符串。

innerHTML 设置或获取位于对象起始和结束标签内的HTML。

innerText 设置或获取位于对象起始和结束标签内的文本。

isContentEditable 获取表明用户是否可编辑对象内容的值。

isDisabled 获取表明用户是否可与该对象交互的值。

isMultiLine 获取表明对象的内容是包含一行还是多行的值。

isTextEdit 获取是否可使用该对象创建一个TextRange 对象。

LANG lang 设置或获取要使用的语言。

LANGUAGE language 设置或获取当前脚本编写用的语言。

lastChild 获取该对象childNodes 集合中最后一个子对象的引用。

length 设置或获取集合中对象的数目。

MULTIPLE multiple 设置或获取表明列表中是否可选中多个项目的Boolean 值。

NAME name 设置或获取对象的名称。

nextSibling 获取对此对象的下一个兄弟对象的引用。

nodeName 获取特定结点类型的名称。

nodeType 获取所需结点的类型。

nodeValue 设置或获取结点的值。

offsetHeight 获取对象相对于版面或由父坐标offsetParent 属性指定的父坐标的高度。

offsetLeft 获取对象相对于版面或由offsetParent 属性指定的父坐标的计算左侧位置。

offsetParent 获取定义对象offsetTop 和offsetLeft 属性的容器对象的引用。

offsetTop 获取对象相对于版面或由offsetTop 属性指定的父坐标的计算顶端位置。

offsetWidth 获取对象相对于版面或由父坐标offsetParent 属性指定的父坐标的宽
度。

onOffBehavior 获取表明指定的Microsoft® DirectAnimation® 行为是否正在运行的对象。

outerHTML 设置或获取对象及其内容的HTML 形式。

outerText 设置或获取对象的文本。

ownerDocument 设置或获取结点关联的document 对象。

parentElement 获取对象层次中的父对象。

parentNode 获取文档层次中的父对象。

parentTextEdit 获取文档层次中可用于创建包含原始对象的TextRange 的容器对象。

previousSibling 获取对此对象的上一个兄弟对象的引用。

readyState 获取对象的当前状态。

recordNumber 获取数据集中生成对象的原始记录。

scopeName 获取为该元素定义的命名空间。

scrollHeight 获取对象的滚动高度。

scrollLeft 设置或获取位于对象左边界和窗口中目前可见内容的最左端之间的距离。

scrollTop 设置或获取位于对象最顶端和窗口中可见内容的最顶端之间的距离。

scrollWidth 获取对象的滚动宽度。

selectedIndex 设置或获取选中选项位于select 对象中的位置。

SIZE size 设置或获取列表中的行数。

sourceIndex 获取对象在源序中的依次位置,即对象出现在document 的all 集合中的顺序。

STYLE 为该设置元素设置内嵌样式。

TABINDEX tabIndex 设置或获取定义对象的Tab 顺序的索引。

tagName 获取对象的标签名称。

tagUrn 设置或获取在命名空间声明中指定的统一资源名称(URN)。

type 根据MULTIPLE 属性的值获取select 控件的类型。

uniqueID 获取为对象自动生成的唯一标识符。

UNSELECTABLE 指定该元素不可被选中。

VALUE value 设置或获取当表单控件提交时返回给服务器的值。

相关文档
最新文档