Web-第三天 JavaScript学习【悟空教程】
今日内容介绍
今日内容学习目标
用户在提交表单时,需要对用户的填写的数据进行校验。本案例只对用户名、密码、确认密码和邮箱进行校验。
JavaScript是web上一种功能强大的编程语言,用于开发交互式的web页面。它不需要进行编译,而是直接嵌入在HTML页面中,由浏览器执行。
JavaScript的组成:
使用JavaScript添加页面动画效果,提供用户操作体验。主要应用有:嵌入动态文本于HTML页面、对浏览器事件做出响应、读写HTML元素、验证提交数据、检测访客的浏览器信息等。
在HTML文件中引入JavaScript有两种方式,一种是在HTML文档直接嵌入JavaScript脚本,称为内嵌式,另一种是链接外部JavaScript脚本文件,称为外联式。对他们的具体讲解如下:
1) 内嵌式,在HTML文档中,通过<script>标签引入,如下
<script type="text/javascript">
//此处为JavaScript代码
</script>
2) 外联式,在HTML文档中,通过<script src=””>标签引入.js文件,如下:
<script src="1.js" type="text/javascript" charset="utf-8"></script>
1) 在使用JavaScript时,需要遵循以下命名规范:
2) 变量的声明
var 变量名; //JavaScript变量可以不声明,直接使用。默认值:undefined
3) 变量的赋值
var 变量名 = 值; //JavaScript变量是弱类型,及同一个变量可以存放不同类型的数据
【基本类型】
【引用类型】
JavaScript运算符与Java运算符基本一致。
JavaScript规范规定以下操作规则(了解)
<script type="text/javascript">
function check(){
//1 用户名
var loginName = document.getElementById("loginnameId").value;
if(loginName == ""){
alert("用户名不能为空");
return false;
}
//2 密码
var loginpwd = document.getElementById("loginpwdId").value;
if(loginpwd == ""){
alert("密码不能为空");
return false;
}
//3 确认密码
var reloginpwd = document.getElementById("reloginpwdId").value;
if(reloginpwd != loginpwd){
alert("密码和确认密码不一致");
return false;
}
//4 邮箱
var email = document.getElementById("emailId").value;
if(! /^([0-9a-zA-Z_-])+@([0-9a-zA-Z_-])+(\.[0-9a-zA-Z]+)$/.test(email)){
alert("邮箱格式不正确");
document.getElementById("emailId").focus(); //提示信息之后获得焦点
return false;
}
return true;
}
</script>
正则的匹配:
JS中有两种匹配正则的方式:
* 使用String对象中的match方法.
* 使用正则对象中的test方法.
函数:实现一定功能的代码块,类似与Java中的方法。关键字function,函数名自定义。
<script type="text/javascript">
//方式1:声明函数
function demo01(){
alert("案例1");
}
// 方式1:调用函数
demo01();
//方式2:声明匿名函数
var demo02 = function(){
alert("案例2");
};
//方式2:调用函数
demo02();
</script>
第一天完成首页中,“轮播图”只提供一张图片进行显示。现需要编写程序,完成自动切换图片功能。
window.setInterval(code, millisec) 按照指定的周期(间隔)来执行函数或代码片段。
参数1: code 必需。执行的函数名或执行的代码字符串。
参数2:millisec 必须。时间间隔,单位:毫秒。
返回值:一个可以传递给 window.clearInterval() 从而取消对 code 的周期性执行的值。
例如:
* 方式1:函数名 , setInterval(show , 100);
* 方式2:函数字符串, setInterval("show()" , 100);
1. 编写html页面,为页面设置加载事件onload
2. 编写事件触发函数
3. 获得轮播图图片
4. 开启定时器,2000毫秒重新设置图片的src属性
<script type="text/javascript">
// 加载成功启动监听器,5秒执行一次
window.onload = function () {
setInterval(changeImage , 5000);
}
//在3张照片之间切换
var num = 1 ;
function changeImage(){
if(num >= 3){
num = 1;
}
var imageObj = document.getElementById("imgId");
imageObj.src = "../img/"+ ++num +".jpg";
}
</script>
在平日浏览网页时,页面一打开5秒后显示广告,然后5秒后再隐藏广告。
setTimeout(code,millisec)
code 必需。要调用的函数或要执行的代码字符串。
millisec 必需。在执行代码前需等待的毫秒数。
obj.style.属性 ,获得指定“属性”的值。
obj.style.属性=值 ,给指定“属性”设置内容。
如果属性由多个单词使用“-”连接,需要将“-”删除,并将后一个单词首字母大写。
例如:background-color 需要改成 backgroundColor
<div id="divId" style="height:100px;width:100px;margin:10px;padding:20px"></div>
<script type="text/javascript">
//1 获得div对象
var divObj = document.getElementById("divId");
//2 获得高度
// * divObj.style.height 数据为"100px"
// * 使用parseInt() ,将字符串“100px”转换成数字“100”
var height = window.parseInt(divObj.style.height);
//3 将原始高度翻倍,再设置给div。
// * 注意:必须添加单位,否则无效
divObj.style.height = height * 2 + "px";
</script>
1. 页面加载成功后触发onload()事件
2. 加载成功后,触发延迟定时器,5秒后,开始显示广告。
3. 显示广告开始后,5秒后再次隐藏广告
<body onload="init()">
<!-- 整体的DIV -->
<div>
<!-- 定时弹出广告的div -->
<div id="divAd" style="width:99%;display: none;">
<img src="../img/f001a62f-a49d-4a4d-b56f-2b6908a0002c_g.jpg" width="100%"/>
</div> ….
<!—在html页面中引入js文件-->
<script src="ad.js"></script>
<!—ad.js内容如下-->
var time;
function init(){
// 设置定时操作:
time = setInterval("showAd()",5000);
}
function showAd(){
// 获得div元素
var divAd = document.getElementById("divAd");
divAd.style.display = "block";
// 清除之前的定时操作:
clearInterval(time);
// 重新设置一个定时:5秒钟隐藏:
time = setInterval("hideAd()",5000);
}
function hideAd(){
// 获得div元素
var divAd = document.getElementById("divAd");
divAd.style.display="none";
clearInterval(time);
}
函数名 | 描述 |
---|---|
setInterval() | 按照指定的周期(以毫秒计)来调用函数或计算表达式 |
clearInterval() | 取消由 setInterval() 设置的 timeout。 |
setTimeout() | 在指定的毫秒数后调用函数或计算表达式。 |
clearTimeout() | 取消由 setTimeout() 方法设置的 timeout |
函数名 | 描述 |
---|---|
alert() | 显示带有一段消息和一个确认按钮的警告框。 |
confirm() | 显示带有一段消息以及确认按钮和取消按钮的确认框。确认框: 确定返回true 取消返回false |
prompt() | 显示可提示用户输入的提示框。点击确定获得用户输入数据 |
<script type="text/javascript">
function change(){
location.href = "http://www.javahelp.com.cn";
}
</script>
<input type="button" value="点我" onclick="change()"/>
a) go(-1) 加载前一个连接,等效back()
b) go(1) 加载后一个链接,等效forward()
事件名 | 描述 |
---|---|
onload | 某个页面或图像被完成加载 |
onsubmit | 提交按钮被点击 |
onclick | 鼠标点击某个对象 |
ondblclick | 鼠标双击某个对象 |
onblur | 元素失去焦点 |
onfocus | 元素获得焦点 |
onchange | 用户改变域的内容 |
onkeydown | 某个键盘的键被按下 |
onkeypress | 某个键盘的键被按下或按住 |
onkeyup | 某个键盘的键被松开 |
onmousedown | 某个鼠标按键被按下 |
onmouseup | 某个鼠标按键被松开 |
onmouseover | 鼠标被移到某元素之上 |
onmouseout | 鼠标从某元素移开 |
onmousemove | 鼠标被移动 |
HTML代码
<input id="e01" type="text" /><span id="textMsg"></span> <br/>
<hr/>
<div id="e02" ></div><span id="divMsg"></span> <br/>
<hr/>
<input id="e03" type="button" value="可以点击"/><span id="buttonMsg"></span> <br/>
JavaScript代码
<script type="text/javascript">
// 页面加载事件:当整个html页面加载成功调用
window.onload = function(){
// 文本框事件
var e01 = document.getElementById("e01");
e01.onfocus = function(){
html("textMsg","文本框获得焦点:focus");
}
e01.onblur = function(){
html("textMsg","文本框失去焦点:blur");
}
e01.onkeydown = function(){
html("textMsg","键盘按下:keydown");
}
e01.onkeypress = function(){
append("textMsg","键盘按:keypress");
}
e01.onkeyup = function(){
append("textMsg","键盘弹起:keyup");
}
// 鼠标事件
var e02 = document.getElementById("e02");
var i = 0;
e02.onmouseover = function(){
html("divMsg","鼠标移上:mouseover");
}
e02.onmousemove = function(){
//html("divMsg","鼠标移动:mousemove , " + i++);
}
e02.onmouseout = function(){
html("divMsg","鼠标移出:mouseout");
}
e02.onmousedown = function(){
html("divMsg","鼠标按下:mousedown");
}
e02.onmouseup = function(){
html("divMsg","鼠标弹起:mouseup");
}
// 按钮事件
var e03 = document.getElementById("e03");
e03.onclick = function () {
html("buttonMsg","单击:click");
}
e03.ondblclick= function () {
html("buttonMsg","双击:dblclick");
}
};
/**
* 指定位置显示指定信息
* @param objId ,元素的id属性值
* @param text,需要显示文本信息
*/
function html(objId,text){
document.getElementById(objId).innerHTML = text;
}
/**
* 指定位置追加指定信息
* @param objId ,元素的id属性值
* @param text,需要显示文本信息
*/
function append(objId,text){
document.getElementById(objId).innerHTML += text;
}
</script>
属性名 | 描述 |
---|---|
clientX | 返回当事件被触发时,鼠标指针的水平坐标。 |
clientY | 返回当事件被触发时,鼠标指针的垂直坐标。 |
keyCode | 返回当事件被触发时,键盘输入ASCII码 |
方法名 | 描述 |
---|---|
preventDefault() | 阻止浏览器默认行为 |
stopPropagation() | 阻止事件的传播 |
<a href="http://www.baidu.com" onclick="one()">百度</a><br/>
<a href="http://www.javahelp.com.cn" onclick="return two()">Java帮帮</a><br/>
<script type="text/javascript">
function one(){
alert("我之后,百度继续访问");
}
function two(event){
alert("我之后,Java帮帮不再访问");
//方式1:
//return false;
//方式2:
var event = event || window.event;
event.preventDefault();
}
</script>
<!--区域1-->
<div id="e1" style="width:200px ; height: 200px; background-color: #f00;">
<div id="e2" style="width:100px ; height: 100px; background-color: #0f0;"></div>
</div>
<hr />
<!--区域2-->
<div id="e3" style="width:200px ; height: 200px; background-color: #f00;">
<div id="e4" style="width:100px ; height: 100px; background-color: #0f0;"></div>
</div>
<script type="text/javascript">
var e1 = document.getElementById("e1");
var e2 = document.getElementById("e2");
var e3 = document.getElementById("e3");
var e4 = document.getElementById("e4");
//设置“区域1”事件
e1.onclick = function(){
alert("e1");
}
e2.onclick = function(){
alert("e2,同时e1也触发");
}
//设置“区域2”事件
e3.onclick = function(){
alert("e3");
}
e4.onclick = function(event){
alert("e4,e3不触发");
var event = event || window.event;
event.stopPropagation();
}
</script>
今日内容介绍
今日内容学习目标
昨天我们已经完成了表单数据校验,整个实现过程存在两处不足的地方:
1. 使用弹出框进行提示,用户体验不友好,可以将错误提示信息现在在对应的表单元素后面
2. 在编写程序时存在多处重复代码,为了达到代码的重复利用,将进行内容抽取成,编写自定义函数。
获得:document.getElementById(“divId”).innerHTML
设置:document.getElementById(“divId”).innerHTML = "...."
事件名 | 描述 |
---|---|
onsubmit | 提交按钮被点击 |
onblur | 元素失去焦点 |
onfocus | 元素获得焦点 |
1. 校验不通过,在当前标签后面,红色字体提示
2. 对所有需要校验的表单项进行全部校验
3. 第一个校验不通过的元素获得焦点
编写步骤:
1.添加错误提示显示区域 <span id=”usernamespan”></span>
2.表单元素id属性
3.校验不同,给span显示错误信息
4.第一个不通过的获得焦点
<tr>
<td>用户名</td>
<td>
<input type="text" id="username" name="username" placeholder="请输入用户名"
onfocus="showTips('username','用户名必须是字母或数字')"
onblur="checkUsername('username','用户名不能为空!')"/>
<span id="usernamespan"></span>
</td>
</tr>
<tr>
<td>密码</td>
<td>
<input type="password" id="password" name="password"
onfocus="showTips('password','密码长度必须6位')"
onblur="checkUsername('password','密码不能为空!')"/>
<span id="passwordspan"></span>
</td>
</tr>
<script>
function showTips(uid,info){
// 控制后面的span元素:
document.getElementById(uid+"span").innerHTML ="<font color='gray'>"+info+"</font>";
}
function checkUsername(uid,info){
// 判断用户名是否为""
var uValue = document.getElementById(uid).value;
if(uValue == ""){
document.getElementById(uid+"span").innerHTML ="<font color='red'>"+info+"</font>";
}else{
document.getElementById(uid+"span").innerHTML = "";
}
}
</script>
事件名 | 描述 |
---|---|
onload | 某个页面或图像被完成加载 |
onsubmit | 提交按钮被点击 |
onclick | 鼠标点击某个对象 |
ondblclick | 鼠标双击某个对象 |
onblur | 元素失去焦点 |
onfocus | 元素获得焦点 |
onchange | 用户改变域的内容 |
onkeydown | 某个键盘的键被按下 |
onkeypress | 某个键盘的键被按下或按住 |
onkeyup | 某个键盘的键被松开 |
onmousedown | 某个鼠标按键被按下 |
onmouseup | 某个鼠标按键被松开 |
onmouseover | 鼠标被移到某元素之上 |
onmouseout | 鼠标从某元素移开 |
onmousemove | 鼠标被移动 |
HTML代码
<input id="e01" type="text" /><span id="textMsg"></span> <br/>
<hr/>
<div id="e02" ></div><span id="divMsg"></span> <br/>
<hr/>
<input id="e03" type="button" value="可以点击"/><span id="buttonMsg"></span> <br/>
JavaScript代码
<script type="text/javascript">
// 页面加载事件:当整个html页面加载成功调用
window.onload = function(){
// 文本框事件
var e01 = document.getElementById("e01");
e01.onfocus = function(){
html("textMsg","文本框获得焦点:focus");
}
e01.onblur = function(){
html("textMsg","文本框失去焦点:blur");
}
e01.onkeydown = function(){
html("textMsg","键盘按下:keydown");
}
e01.onkeypress = function(){
append("textMsg","键盘按:keypress");
}
e01.onkeyup = function(){
append("textMsg","键盘弹起:keyup");
}
// 鼠标事件
var e02 = document.getElementById("e02");
var i = 0;
e02.onmouseover = function(){
html("divMsg","鼠标移上:mouseover");
}
e02.onmousemove = function(){
//html("divMsg","鼠标移动:mousemove , " + i++);
}
e02.onmouseout = function(){
html("divMsg","鼠标移出:mouseout");
}
e02.onmousedown = function(){
html("divMsg","鼠标按下:mousedown");
}
e02.onmouseup = function(){
html("divMsg","鼠标弹起:mouseup");
}
// 按钮事件
var e03 = document.getElementById("e03");
e03.onclick = function () {
html("buttonMsg","单击:click");
}
e03.ondblclick= function () {
html("buttonMsg","双击:dblclick");
}
};
/**
* 指定位置显示指定信息
* @param objId ,元素的id属性值
* @param text,需要显示文本信息
*/
function html(objId,text){
document.getElementById(objId).innerHTML = text;
}
/**
* 指定位置追加指定信息
* @param objId ,元素的id属性值
* @param text,需要显示文本信息
*/
function append(objId,text){
document.getElementById(objId).innerHTML += text;
}
</script>
开发中,需要使用表格陈列数据,数据过多不易查看,通常使用隔行换色进行表示。
<head>
<meta charset="UTF-8">
<title></title>
<script type="text/javascript">
//js代码在<body>之前,不能获得<body>标签体中的内容,还没有加载到
var e01 = document.getElementById("e01");
alert(e01); //打印:null
function init () {
//页面加载成功之后执行
var e02 = document.getElementById("e01");
alert(e02.value); //打印:Java帮帮
}
</script>
</head>
<body onload="init()">
<input type="text" name="" id="e01" value="Java帮帮" />
</body>
<head>
<meta charset="UTF-8">
<title></title>
<script type="text/javascript">
window.onload = function () {
//页面加载成功之后执行
var e02 = document.getElementById("e01");
alert(e02.value); //打印:Java帮帮
}
</script>
</head>
<body>
<input type="text" name="" id="e01" value="Java帮帮" />
</body>
在函数内部this表示:当前操作的元素。
<script type="text/javascript">
window.onload = function () {
var allTr = document.getElementsByTagName("tr");
// 跳过前2行
for (var i = 2 ; i < allTr.length ; i ++) {
//给行tr设置背景颜色,奇数行白色,偶数行指定颜色
if(i % 2 == 0){
allTr[i].style.backgroundColor="#FFF";
} else {
allTr[i].style.backgroundColor="#4E7FD1";
}
}
}
</script>
开发中,经常需要对表格数据进行“批量处理”,就需要快速的对列表项进行操作,本案例我们来完成“全选和全不选”
ele.checked 表示元素是否选中,true表示选中,false表示没有选中
例如:ele.checked = true; //设置元素被选中。
<input type="checkbox" onclick="selectAll(this)" >
<script type="text/javascript">
function selectAll (obj) {
//当前复选框是否选择,如果选中其他都选中,如果没有选中其他都不选中。
// * getElementsByClassName 通过标签class属性的名称获得对应的所有标签。<xx class="">
var allCheckbox = document.getElementsByClassName("itemSelect");
for (var i = 0 ; i < allCheckbox.length ; i ++) {
allCheckbox[i].checked = obj.checked;
}
}
</script>
在日常应用中,我们需要完善个人信息,“所在地”要求选择省市,当选择省时,该省对应的市将自动的更新。
创建语法
new Array();
new Array(size); // size 数组元素个数,数组成员默认值undefined
new Array(element0, element0, ..., elementn); //参数列表,为数组初始化数据
document.createElement() 创建元素节点。
document.createTextNode() 创建文本节点。
ele.appendChild() 向标签体末尾添加新的子节点。
实例:
<!—HTML代码-->
<div id="divId"></div>
<!—JavaScript代码-->
<script type="text/javascript">
//1 获得div对象(元素--标签)
var divObj = document.getElementById("divId");
//2 创建a元素
// * createElement 创建指定名称的元素
var aObj = document.createElement("a");
//2.1 创建文件
var nodeObj = document.createTextNode("xxx");
// * 将文本添加到a元素
aObj.appendChild(nodeObj);
//2.2 给a元素设置属性
// setAttribute(name,value) 给指定的元素设置属性,name属性名,value属性值
aObj.setAttribute("href","http://www.javahelp.com.cn");
//3 将新创建的a元素,添加到div元素中
// * appendChild 追加子元素
divObj.appendChild(aObj);
</script>
步骤1:给注册页面添加select标签
<select id="provinceId" onchange="selectCity(this.value)" style="width:150px">
<option value="">----请-选-择-省----</option>
<option value="0">北京</option>
<option value="1">吉林省</option>
<option value="2">山东省</option>
<option value="3">河北省</option>
<option value="4">江苏省</option>
</select>
<select id="cityId" style="width:150px">
<option value="">----请-选-择-市----</option>
</select>
步骤2:js实现
<script type="text/javascript">
// 定义二维数组,初始化数据
var cities = new Array(4);
cities[0] = new Array("市辖区","县");
cities[1] = new Array("长春市","吉林市","松原市","延边市");
cities[2] = new Array("济南市","青岛市","烟台市","潍坊市","淄博市");
cities[3] = new Array("石家庄市","唐山市","邯郸市","廊坊市");
cities[4] = new Array("南京市","苏州市","扬州市","无锡市");
//通过选择的省,显示对应的所有的市
function selectCity(index){
//通过索引获得对应的所有的市
var allCity = cities[index];
// 获得city select 对象
var cityObj = document.getElementById("cityId");
cityObj.innerHTML = "<option value=''>----请-选-择-市----</option>";
//遍历所有的市
for(var i = 0 ; i < allCity.length ; i ++){
// 获得具体的市
var cityName = allCity[i];
// 创建option
var option = document.createElement("option");
// 创建文本节点
var textNode = document.createTextNode(cityName);
//将文本添加到option中
option.appendChild(textNode);
// 将option追加到select中
cityObj.appendChild(option);
}
}
</script>
从昨天到现在,所有的案例中,我们获得元素,创建元素等操作,统称为DOM操作。接下来我们一起总结一下DOM。
lgetElementById() 通过id属性值获得元素(整个HTML文档id位置)
<xxx id=””>
lgetElementsByName() 通过name属性值获得所有元素(整个HTML文档中name可能相同)
<xxx name=””>
lgetElementsByClassName() 通过 class属性值获得所有元素
<xxx class=””>
lgetElementsByTagName() 通过标签名获得所有的元素
<xxx>
createElement() 创建指定名称的元素
createTextNode() 创建指定内容的文本节点
childNodes,获得所有的子节点
nodeName, 返回节点名称。(标签名)
nodeType, 返回节点类型。(元素、属性、文本 等)
nodeValue, 节点的值。(只有文本节点才有该属性)
appendChild() 给元素追加子元素
<a>
…
追加位置
</a>
insertBefore() 给当前元素前追加兄弟元素
插入位置
<a>
setAttribute(k,v) 给元素设置属性
<xxx k=v >
分类 | 函数名 | 描述 |
---|---|---|
转换 | parseFloat() | 解析一个字符串并返回一个浮点数。 |
parseInt() | 解析一个字符串并返回一个整数。 | |
执行 | eval() | 计算 JavaScript 字符串,并把它作为脚本代码来执行。 |
编码 | encodeURI() | 把字符串编码为 URI。 |
decodeURI() | 解码某个编码的 URI。 |
当获得select标签后,可以通过element的childNodes属性获得的子节点(子元素和文本节点),通过子标签(option) 的 selected属性判断是否选中,就可以完成需要功能。
<td>
<select id="leftSelectId" style="width:100px" multiple="multiple" size="6">
<option>悟空教程</option>
<option>Java帮帮</option>
<option>Java学院</option>
</select>
</td>
<td>
<input id="left1" type="button" value=">" style="width:50px" onclick="leftToRightOne()"/> <br/>
<input id="left2" type="button" value=">>" style="width:50px"onclick="leftToRightSelect()"/> <br/>
<input id="left3" type="button" value=">>>" style="width:50px"onclick="leftToRightAll()"/> <br/>
<input type="button" value="<" style="width:50px"/> <br/>
<input type="button" value="<<" style="width:50px"/> <br/>
<input type="button" value="<<<" style="width:50px"/> <br/>
</td>
<td>
<select id="rightSelectId" style="width:100px" multiple="multiple" size="6">
<option>孤独求败</option>
</select>
</td>
/**
* 此处使用 childNodes 获得所有子节点,也可以使用 <select>标签特有的属性options获得所有的<option>子标签
*/
function leftToRightOne(){
var leftSelect = document.getElementById("leftSelectId");
var rightSelect = document.getElementById("rightSelectId");
//alert(leftSelect.childNodes[1].nodeName);
for(var i = 0 ; i < leftSelect.childNodes.length ; i ++){
if(leftSelect.childNodes[i].selected){
rightSelect.appendChild(leftSelect.childNodes[i]);
break;
}
}
}
/**
* leftSelect.childNodes.length 最终长度为7,获得4个text文本,3个option
* * 元素:text、option[1]、text、option[2]、text、option[3]、text
* * 当遍历时,第一个option移除后,length变成了6,此时i==2,正好是第二个option
* 移除第二个后,此时i=3,正好是第三个option,所以可以正常移动所有
*/
function leftToRightSelect(){
var leftSelect = document.getElementById("leftSelectId");
var rightSelect = document.getElementById("rightSelectId");
for(var i = 0 ; i < leftSelect.childNodes.length ; i ++){
if(leftSelect.childNodes[i].selected){
rightSelect.appendChild(leftSelect.childNodes[i]);
}
}
}
function leftToRightAll(){
var leftSelect = document.getElementById("leftSelectId");
var rightSelect = document.getElementById("rightSelectId");
for(var i = 0 ; i < leftSelect.childNodes.length ; i ++){
rightSelect.appendChild(leftSelect.childNodes[i]);
i--; //因为length是不断变化的,保证一直移除第一个。
}
}
function leftToRightAll(){
var leftSelect = document.getElementById("leftSelectId");
var rightSelect = document.getElementById("rightSelectId");
for(var i = 0 ; i < leftSelect.childNodes.length ; ){
rightSelect.appendChild(leftSelect.childNodes[i]);
//因为length是不断变化的,保证一直移除第一个。
}
}
function leftToRightAll(){
var leftSelect = document.getElementById("leftSelectId");
var rightSelect = document.getElementById("rightSelectId");
for(var i = leftSelect.childNodes.length - 1 ; i >=0 ; i --){
rightSelect.appendChild(leftSelect.childNodes[i]);
}
}