JavaScript之DOM对象——升学就业帮Java知识分享

2023-06-18 0 945

1. DOM第一类重新认识

1.1 甚么是DOM第一类

JavaScript之DOM对象——升学就业帮Java知识分享

DOM数学模型的全名是:Document Object Model, 即:文件格式第一类数学模型,它表述了操作方式文件格式第一类的USB。

WEB网页的HTML文件格式,document就是根节点,其他的子第一类是子节点.

DOM数学模型在AJAX合作开发中的促进作用

在ajax中,DOM数学模型只不过是最核心理念的内部结构,是大部份ajax合作开发的虚拟化.假如没DOM数学模型,就没配套措施在应用程序发生改变网页的文本,大部份的局部性创下,触发器允诺也就难于同时实现。熟练DOM数学模型的有关控制技术,才算或者说掌控了ajax合作开发一脉相承。

1.2 应用程序运载和表明网页的操作过程

1. 浏览源代码

2. 透过网页源代码读取有关文本到缓存,也是依照HTML源代码在缓存中构筑有关DOM第一类。

3. 依照DOM第一类的有关特性,来展开表明。

JavaScript之DOM对象——升学就业帮Java知识分享

1.3 DOM节点展开分类node

1.3.1 节点的基本概念

在DOM数学模型中,整个文件格式是由层次不同的多个节点组成,可以说节点代表了全部文本。

1.3.2 节点的类型

元素节点、文本节点和特性节点

<font id=“font1” color=“red”>hello DOM!</font>

文本节点和特性节点都看作元素节点的子节点

我们一般所说的节点指的是元素节点。

1.3.3 节点的基本特性

nodeName:元素节点返回节点类型(即,标记名称);特性节点返回特性名称,文本节点返回”#text”.

nodeType:元素节点返回1,特性节点返回2,文本节点返回3

nodeValue:元素节点返回null, 特性节点返回特性值, 文本节点返回文本值。

1.4 DOM节点关系

应用程序在解析文件格式之前会将文件格式读取到缓存形成DOM树,树形节点存在有关层级关系,常用关系如下所示:

根节点(root): 大部份节点的顶层节点

父子节点(parent-child):<html> 元素作为父级,<head> 和 <body> 元素作为子级

兄弟节点(Sibling):<a> 和 <h1> 元素是兄弟关系;<title> 和 <h1> 元素并不是兄弟关系

叶子节点: 没任何子节点的节点

空节点: 没任何文本的节点

1.使用document.getElementById()引用指定id的节点

function getNodeById() {     var pNode = document.getElementById(“p”);     console.log(pNode);     console.log(“nodeName: “ + pNode.nodeName + “,nodeValue: “          + pNode.nodeValue + “,nodeType: “ + pNode.nodeType); }

2. 使用

document.getElementsByClassName(“hello”)将大部份class特性为”hello”的元素节点放到一个数组中返回function getNodeByClassName() {     var pNodes = document.getElementsByClassName(“hello”);     for (var i = 0; i < pNodes.length; i++) {         var pNode = pNodes[i];         console.log(pNode);         console.log(“nodeName: “ + pNode.nodeName + “,nodeValue: “               + pNode.nodeValue + “,nodeType: “+ pNode.nodeType);     } }

3. 使用

document.getElementsByTagName(“a”),将大部份<a>元素节点放到一个数组中返回。 function getNodeByTagName(){ var aNodes = document.getElementsByTagName(“a”);     for (var i = 0; i < aNodes.length; i++) {         varaNode = aNodes[i];console.log(aNode);         console.log(“nodeName: “ + aNode.nodeName + “,nodeValue: “+ aNode.nodeValue +“,nodeType: “ + aNode.nodeType);     } }

4. 使用

document.getElementsByName(“gender”),将大部份name特性为”gender”的元素节点放到一个数组中返回。function getNodeByName() {     var radios = document.getElementsByName(“gender”);     for (let i = 0; i < radios.length; i++) {         var radio = radios[i];         console.log(radio);         console.log(“nodeName: “+ radio.nodeName +“,nodeValue: “               + radio.nodeValue + “,nodeType: “+ radio.nodeType);             } }

2.2 间接获得元素第一类

间接引用节点

1.引用子节点

每个节点都有一个childNodes集合特性,类型是数组第一类,表示该节点的大部份子节点的集合。这些子节点按照它在文件格式中出现的顺序排列,因此可以透过索引来依次访问各个子节点。

firstChild

lastChild

2.引用父节点

DOM数学模型中,除了根节点,每个节点都仅有一个父节点,可以用parentNode属性来引用。

3. 引用兄弟节点

element.nextSibling; //引用下一个兄弟节点

element.previousSibling; //引用上一个兄弟节点

假如该节点没相应的兄弟节点,则特性返回null.

案例: 依照以下HTML内部结构,同时实现DOM节点有关操作方式:

<div id=“parent”> <p id=“p1”>白日依山尽</p>     <p id=“p2”>黄河入海流</p>     <p id=“p3”>欲穷千里目</p>     <p id=“p4”>更上一层楼</p> </div> <button onclick=“getNodeByParent();”></button> <button onclick=“”></button> <button onclick=“”></button> function getNodeByParent() { /     var parentNode = document.getElementById(“parent”);       varchildNodes = parentNode.childNodes;console.log(“chiledNodes: “ + childNodes.length);     console.log(“childElementCount: “+ parentNode.childElementCount);// 3. 遍历输出大部份的子节点     for (var i = 0; i < childNodes.length; i++) {         varchildNode = childNodes[i];console.log(“==> 第” + (i + 1) + “个节点: “)         console.log(childNode);        console.log(“nodeName: “+ childNode.nodeName +“,nodeValue: “             + childNode.nodeValue + “,nodeType: “+ childNode.nodeType);     } console.log(parentNode.firstChild);     console.log(parentNode.lastChild);     console.log(parentNode.firstElementChild);console.log(parentNode.lastElementChild);     console.log(“=======================”);     var childNodes = parentNode.children;     for (var i = 0; i < childNodes.length; i++) {         varchildNode = childNodes[i];console.log(childNode);     } }function getNodeBySon() { varp2Node =document.getElementById(“p2”);     var parentNode = p2Node.parentNode;     console.log(parentNode);console.log(p2Node.parentElement); }function getNodeByBrother() { var p2Node = document.getElementById(“p2”);           console.log(p2Node.nextElementSibling); console.log(p2Node.previousSibling);      console.log(p2Node.previousElementSibling); }

3. DOM操作方式元素的特性

元素节点.特性名称(可以读写特性值)

使用setAttritbute(), getAttribute()添加和设置特性

代码示例如下:

<!DOCTYPE html> <html lang=“en”> <head>     <meta charset=“UTF-8”>     <meta name=“viewport” content=“width=device-width, initial-scale=1.0”> <title>DOM操作方式特性</title>     <style>         .box2 {             background-color: red;color: green;             font-size24px;         }     </style> </head> <body>     <img src=“img/a.jpg” id=“img”>     <div id=“div” class=“box1”>hello</div>     <button onclick=“getMyAttribute();”></button>     <button onclick=“setMyAttribute();”>设置节点的特性</button>     <script>         function getMyAttribute() {             var imgNode = document.getElementById(“img”);                var imgVal = imgNode.getAttribute(“src”);             var idVal = imgNode.getAttribute(“id”);             // 输出节点的值 console.log(imgVal);             console.log(idVal);             var divNode = document.getElementById(“div”);             varclassVal = divNode.getAttribute(“class”);             var idVal = divNode.getAttribute(“id”);             console.log(classVal);             console.log(idVal);         }                 function setMyAttribute() {             var imgNode = document.getElementById(“img”);             imgNode.setAttribute(“src”“img/b.jpg”);             var divNode = document.getElementById(“div”);             divNode.setAttribute(“src”“”)             div.setAttribute(“class”“box2”);         }     </script> </body> </html>

4. DOM操作方式元素文本

当标签获得值的时候使用value特性

双标签获得值的时候使用的是innerHTML或者innerText

双标签的特殊情况(value)

Select/textarea

取值的时候使用value特性

赋值的时候使用innerHTML或者innerText即可

innerHTML特性

InnerText节点的特性:

设置: 都是文本,应用程序不会解析里面包含的html标签

有关代码如下所示:

<!DOCTYPE html> <html lang=“en”> <head>     <meta charset=“UTF-8”> <meta name=“viewport” content=“width=device-width, initial-scale=1.0”>     <title>Document</title> </head> <body>     <div id=“div1”>         <h1>标签</h1>     </div>     <button onclick=“getMyText()”></button>     <button onclick=“setMyText()”>设置元素文本</button>     <br>     简介: <input type=“text” id=“desc”>        家乡: <select name=“city” id=“city”>         <option value=“武汉”>武汉</option>         <option value=“兰州”>兰州</option>         <option value=“银川”>银川</option>     </select>      <button onclick=“getDataFromInputText()”></button>      <script>         function getMyText() {              var divNode = document.getElementById(“div1”);             console.log(divNode.innerHTML);             console.log(divNode.innerText);         }         function setMyText() {            var divNode = document.getElementById(“div1”);             // divNode.innerHTML = “<span style=color:red>HelloWorld</span>”;             divNode.innerText = “<span style=color:red>HelloWorld</span>”;         }         function getDataFromInputText() {            var descText = document.getElementById(“desc”);             console.log(descText.value);var citySelect = document.getElementById(“city”);             console.log(citySelect.value);         }     </script> </body> </html>

5. DOM操作方式样式

1.透过style第一类发生改变节点的CSS

利用style第一类来控制元素的css, 每个style第一类对应为该元素指定的css, 而每个css特性都对应于style第一类的特性。

对于单个单词的css特性,在style第一类中的特性名称不变,但对于双单词或多单词的特性改写为骆驼写法。例如:css中的font-size对应style特性为fontSize.

2.使用className特性指定节点样式

节点的className特性对应于css中的类选择器。

有关代码如下所示:

<!DOCTYPE html> <html lang=“en”> <head>     <meta charset=“UTF-8”>     <meta name=“viewport” content=“width=device-width, initial-scale=1.0”> <title>21.DOM第一类操作方式样式</title>     <style>         .box1 {             background-color: blue;             font-size30px;             color: red;         }         .box2 {             background-color: red;             font-size24px;             font-style: italic;             color: green;         }     </style> </head> <body>     <div id=“div1”>Hello Xyr</div>     <button onclick=“onChangeStyle()”>节点样式的修改</button>     <script>        function onChangeStyle() {             var divNode = document.getElementById(“div1”);             // 3种方式             // 方式一: 透过className特性、divNode.className =“box1”;             // 方式二: 透过节点的setAttribute方法             divNode.setAttribute(“class”“box2”);             // 方式三· 透过节点的style特性    divNode.style.backgroundColor =“black”;             divNode.style.color = “white”;             divNode.style.fontWeight =“700”;             divNode.style.fontSize = “24px”;             /*                  style 特性的修改 和 className 的区别                 1 style 的修改是 在元素的行间添加style特性                   2.style的修改 需要写很多css的样式 (稍微复杂)           className 修改class 的特性                        4. className修改 比 style的简单               */     }     </script> </body> </html>

6. DOM操作方式节点

使用document.createElement方法创建元素节点

var divElement = document.createElement(“div”)

使用appendChild方法添加节点

parentNode.appendChild(childElement);

使用insertBefore方法插入子节点

parentNode.insertBefore(newNode, beforeNode)

使用removeChild方法删除子节点

parentNode.removeChild(childNode);

使用replaceChild方法替换子节点

parentNode.replaceChild(newNode, childNode);

使用cloneNode方法克隆节点,传入true表示深拷贝

node.cloneNode(true);

有关操作方式代码如下所示:

<!DOCTYPE html> <html lang=“en”> <head>     <meta charset=“UTF-8”>     <meta name=“viewport” content=“width=device-width, initial-scale=1.0”>     <title>Document</title> </head> <body> <ul id=“ul”>         <li>AAA</li>         <li>BBB</li>         <li>CCC</li>         <li>DDD</li>     </ul>     <div id=“div1”>     </div>     <button onclick=“addNode()”>添加节点</button>     <button onclick=“addBeforeNode()”>在指定元素之前添加节点</button>     <button onclick=“replaceNode()”>替换节点</button>     <button onclick=“removeNode()”>删除节点</button>     <button onclick=“cloneEleNode()”>复制节点</button>     <script>         function addNode() {             // 1. 创建文本节点XXX            var textNode = document.createTextNode(“XXX”);             // 2. 创建li元素节点<li>            var liEle = document.createElement(“li”);             // 3. 将文本节点添加到li节点当中            liEle.appendChild(textNode);                          // 5. 将li元素节点添加到ul节点当中            ulEle.appendChild(liEle);      }         function addBeforeNode() {             // 创建文本节点             var textNdoe = document.createTextNode(“ZZZ”);             // 创建li元素节点<li>             var liEle = document.createElement(“li”);             // 将文本节点添加到li节点中          liEle.appendChild(textNdoe); var ulEle = document.getElementById(“ul”);              var li3Ele = document.getElementsByTagName(“li”)[2];             // 将li节点插入到CCC节点之前             ulEle.insertBefore(liEle, li3Ele);         }         // 将DDD节点替换成百度链接  function replaceNode() {             // 创建百度文本节点             var bdText = document.createTextNode(“百度一下,你就知道!!!”);             // 创建超链接元素节点   var aEle = document.createElement(“a”);             // 将百度文本节点添加到超链接元素节点中             aEle.appendChild(bdText);             // 给超链接节点添加 href 特性   aEle.setAttribute(“href”“http://www.baidu.com”);                 var ulEle = document.getElementById(“ul”);                 var li4Ele = document.getElementsByTagName(“li”)[3];             // 透过ul元素节点将DDD节点替换成超链接元素节点             ulEle.replaceChild(aEle, li4Ele);         }         // 移除AAA节点         function removeNode() {             varli1Ele =document.getElementsByTagName(“li”)[0];              var ulEle = li1Ele.parentNode;             // 透过父节点移除子节点AAA   ulEle.removeChild(li1Ele);         }         // 将ul列表复制到div中         function cloneEleNode() {               varulEle =document.getElementById(“ul”);               var divEle = document.getElementById(“div1”);             // 将ul节点展开克隆     var cloneNode = ulEle.cloneNode(false);             divEle.appendChild(cloneNode);         }</script> </body> </html>

7. JavaScript操作方式表单

利用表单在文件格式中的索引或表单的name特性来引用表单

docuemnt.getEl

代码如下所示:

<form id=“login” action=“server/server.html” method=“GET” name=“loginName”>         账号: <input type=“text” name=“account”><br>         密码: <input type=“password” name=“password”><br>         <input type=“submit”> </form> <button onclick=“getFormNode()”></button> <button onclick=“getFormAttr()”></button> <script>       function getFormNode() {               var loginForm = document.getElementById(“login”);         console.log(loginForm);        var loginForm2 = document.loginName;     console.log(loginForm2);               console.log(loginForm3);         // 方       console.log(loginForm4);     } </script>

表单常用特性如下表所示:

特性

描述

action

返回或者设置action特性

elements

个数组,包括该表单中大部份的表单域

length

返回表单的表单域的数量

method

返回或设置表单的method特性

name

返回或设置表单的name特性

代码示例如下所示:

function getFormAttr() {     var loginForm = document.getElementById(“login”);   console.log(loginForm.action);  console.log(loginForm.length);     console.log(loginForm.method);     单域第一类,返回的是一个数组  var forms = loginForm.elements;     for(var i = 0; i < forms.length; i++) {       var form = forms[i];        console.log(form);     } }

运行结果如下图所示:

JavaScript之DOM对象——升学就业帮Java知识分享

7.3 表单第一类的常用方法

表单常用方法如下表所示:

方法

描述

submit()

相当于单击submit按钮,表示表单提交到指定网页

reset()

相当于单击reset按钮,表示大部份表单域到初始值

代码示例如下所示:

// 提交表单function submitForm() {     var loginForm = document.getElementById(“login”);     loginForm.submit(); } // 重置表单function resetForm() { var loginForm = document.getElementById(“login”);     loginForm.reset(); }

7.4 form表单的常用事件特性

表单常用事件特性如下表所示:

事件

描述

onsubmit

在表单提交之前触发

onreset

在表单被重置之前触发

注意:

1.表单点击提交会触发onsubmit事件,执行的函数需要给出返回值,返回true表示可以提交数据,返回false,表示不能提交数据

2.其中onsubmit特性的特性值return关键字不能省略,假如省略的 返回结果为false,还会提交数据和网页跳转。

3.reset表示重置到初始的状态,而不是清空。

7.5 form中表单域

代码示例如下所示:

function getFormField(){       var accountNode = document.getElementById(“accountId”);     console.log(accountNode);     // 透过表单的n var loginForm = document.getElementById(“login”);     var accountNode2 = loginForm.account;     console.log(accountNode2); var accountNode3 = loginForm.elements[0]     console.log(accountNode3); }

7.5 form表单域组件常用特性和方法.

disabled :使表单域不能接受用户的操作方式,变为只读

readonly: 文本不可以更改,变为只读

单域的名称

type :判断表单域的类型

focus():使表单域获得焦点

blur():使表单域失去焦点

注意:

1. 设置readonly特性的时候only首字母需要大写才能生效

2. 一个网页只能够有一个组件设置为获得焦点

3. blur方法常用于在失去焦点时展开表单校验,部分代码如下所示:

<form id=“login” action=“server/server.html” method=“GET” name=“loginName”>        账号: <input id=“accountId” type=“text” name=“account”  onblur=“checkAccount()”><span id=“msg”> </span><br>         密码: <input id=“pwdId” type=“password” name=“pwd”><br>         <input type=“submit”>     </form> <script>     function checkAccount() {         var accountNode = document.getElementById(“accountId”);         var msgNode = document.getElementById(“msg”);         var msg = accountNode.value;         if (msg != null&& msg.length >0) {             msgNode.innerText = “√ 账号合法”;             msgNode.style.color = “green”;         } else {             msgNode.innerText = “× 账号不能为空”;             msgNode.style.color =“red”;         }     } </script>

readonly和disabled的区别?

共同点:都是导致文本不可以更改

区别:

readonly:中的文本是可以提交的

disabled:数据是不可以提交的,不可以在被操作方式

代码示例如下所示:

<body>    <form id=“login” action=“server/server.html” method=“GET” name=“loginName”><span id=“msg”></span><br>         账号: <input id=“accountId” type=“text” name=“account”><br>         密码: <input id=“pwdId” type=“password” name=“pwd”><br>         <input type=“submit”>     </form>     <button onclick=“getInputFields()”>表单域的常用特性设置</button>     <script>         function getInputValue() {             var accountNode = document.getElementById(“accountId”);             console.log(accountNode.value);             // accountNode.disabled = true;             // accountNode.readOnly = true; console.log(accountNode.name);             console.log(accountNode.form);             console.log(accountNode.type);             accountNode.focus();     }</script> </body>

7.6 单选按钮组和复选框常用操作方式

通过checked特性获得选中和未选中的状态。

复选框的处理类似单选按钮

me”)

使用复选按钮同时实现全选和反选效果图如下所示:

JavaScript之DOM对象——升学就业帮Java知识分享

代码示例如下所示:

<!DOCTYPE html> <html lang=“en”> <head>     <meta charset=“UTF-8”>     <meta name=“viewport” content=“width=device-width, initial-scale=1.0”>     <title>DOM操作方式单选和复选按钮</title> </head> <body>性别:<input type=“radio” name=“gender” value=“male” checked=“checked”>男     <input type=“radio” name=“gender” value=“female”><br>     <button onclick=“getRadioValues()”></button>     <hr>     <br>    爱好: <input id=“swimming” type=“checkbox” name=“hobby” value=“swimming”><label for=“swimming”>游泳</label>      <input id=“football” type=“checkbox” name=“hobby” value=“football”><label for=“football”>足球</label>      <input id=“basketball” type=“checkbox” name=“hobby” value=“basketball”><label for=“basketball”>篮球</label>      <input id=“coding” type=“checkbox” name=“hobby” value=“coding”><label for=“coding”>写代码</label> <br>     <input type=“checkbox” id=“boxid” onclick=“selAllNo();”/>全选/全不选<br>     <button onclick=“getCheckBoxValues()”></button>     <button onclick=“getCheckBoxValues()”>多选框全选操作方式</button>     <button onclick=“selectAll()”>全选</button>     <button onclick=“selectNone()”>全不选</button>     <button onclick=“selectOther()”>反选</button>     <hr>     <script>        function getRadioValues() {             var radios = document.getElementsByName(“gender”);             for(var i = 0; i < radios.length; i++) {                 var radioNode = radios[i];                 if (radioNode.checked == true) {                     console.log(radioNode.value);                 }             }         }function getCheckBoxValues() {             var hobbys = document.getElementsByName(“hobby”);             for(var i = 0; i < hobbys.length; i++) {                 var checkboxNode = hobbys[i];                 if(checkboxNode.checked == true) {                    console.log(checkboxNode.value);                 }             }     }         //同时实现全选和全不选  function selAllNo() {             /*                 得到上面那个复选框                     – 透过id获取到                 判断这个复选框是否是选中                     – if条件,checked==true                假如是选中,下面是全选                 4、假如不是选中,下面是全不选             */             //得到上面复选框             var box1 = document.getElementById(“boxid”);             //判断这个复选框是否是选择             if(box1.checked == true) { //是选择状态  //调用全选方法                 selectAll();             } else { //不是选中状态                 //调用全不选方法               selectNone();             }         }//同时实现反选的操作方式         function selectOther() {                            返回数组,遍历数组                     3、得到每一个复选框                        4、判断当前的复选框是选中还是不选中                         – if(love1.checked == true) {}                     5、假如选中,特性checked设置成false,否则,设置成true                 */                 操作方式的复选框 var hobbys = document.getElementsByName(“hobby”);                 //遍历数组                 for (var i = 0; i < hobbys.length; i++) {                     //得到每一个复选框 var checkboxNode = hobbys[i];                     //判断当前这个复选框是甚么状态                     if (checkboxNode.checked == true) { //是选中的状态                         //设置checked=false  checkboxNode.checked = false;                     } else { //是不选中的状态                         //把checked=true                       checkboxNode.checked =true;                     }                 }             }//同时实现全不选的操作方式     function selectNone() {                    2、返回的是数组,遍历数组                     3、得到每一个复选框                     4、设置复选框的特性 checked=false                 */                 //得到要操作方式的复选框                 var hobbys = document.getElementsByName(“hobby”);                 //遍历数组                 for (var i = 0; i < hobbys.length; i++) {                     //得到每一个复选框                     var checkboxNode = hobbys[i];                     //设置特性的值checked = false;    checkboxNode.checked = false;                 }             }         //同时实现全选的操作方式   function selectAll() {             ElementsByName()                 2、返回是数组,                     – 特性 checked判断复选框是否选中                         *** checked = true; //表示选中                         *** checked = false;//表示不选中                     – 遍历数组,得到的是每一个checkbox                         * 把每一个checkbox特性checked=true                                 */                         var hobbys = document.getElementsByName(“hobby”);             //遍历数组,得到每一个复选框             for (var i = 0; i < hobbys.length; i++) {var checkboxNode = hobbys[i];  //得到每一个复选框                 //设置特性是true                 checkboxNode.checked = true;             }         }</script> </body> </html>

7.7 下拉列表的使用

常用特性的使用

使用selec

使用option第一类的value特性和text特性, 可以读写这两个特性。

使用option第一类的selected特性选中该option

示例代码如下所示:

家乡: <select name=“city” id=“city” onchange=“changeText(this.value)”>     <option value=“nc”>南昌</option>     <option value=“bj”>北京</option>     <option value=“sz”>深圳</option>     <option value=“sh”>上海</option> </select> <button onclick=“getSelectNode();”></button> <button onclick=“addMyOption();”>添加选项</button> <script>     function changeText(val{         alert(val);     }     function addMyOption() {           var selectNode = document.getElementById(“city”);         // 2. 创建一个option         var opt = document.createElement(“option”);         // 3. 设置option节点特性         opt.value = “cq”;         opt.text = “重庆”;         // 4. 将opt添加到select节点中   selectNode.add(opt);     } </script>

我们也可以透过下拉选项框第一类的appendChild方法或者add方法添加option节点,代码如下所示:

function addMyOption() {     var selectNode = document.getElementById(“city”);     // 2. 创建一个option     var opt = document.createElement(“option”);     // 3. 设置option节点特性     opt.value = “cq”;     opt.text =“重庆”;     // 4. 将opt添加到select节点中     selectNode.add(opt); }

案例: 使用下拉选项框同时实现左选和右选添加的案例,效果图如下所示:

JavaScript之DOM对象——升学就业帮Java知识分享

示例代码如下所示:

<!DOCTYPE html> <html> <head>     <meta charset=“UTF-8”>     <title></title>     <style type=“text/css”>         #div1 {             width1000px;             margin0 auto;             margin-top200px;         }         #div11 {             width300px;             height400px;             border1px solid red;             float: left;         }         #div12 {             width200px;             height400px;             border1px solid blue;             /*position: absolute;*/             /*left: 400px;*/             float: left;         }         #div13 {             width300px;             height400px;             border1px solid green;             float: left;         }         input {             margin-left50px;     }         .add {             margin-top:100px;         }         #select1 {             width300px;             height400px;         }         #select2 {             width300px;             height400px;         }     </style> </head> <body>     <div id=“div1”>         <div id=“div11”>             <select id=“select1” multiple=“multiple”>                 <option id=“op1”>AAAAAAAAAAAAAAA</option>                 <option id=“op1”>BBBBBBBBBBBBBBB</option>                 <option id=“op1”>CCCCCCCCCCCCCCC</option>                 <option id=“op1”>DDDDDDDDDDDDDDD</option>                 <option id=“op1”>EEEEEEEEEEEEEEE</option>             </select>         </div>         <div id=“div12”>             <input type=“button” class=“add” onclick=“selectToRight()” value=“Add >” /> <br /><br />             <input type=“button” onclick=“selectToLeft()” value=“< Remove” /> <br /><br /><br /><br />             <input type=“button” onclick=“selecAllToRight()” value=“Add All >>” /><br /><br />            <input type=“button” onclick=“selecAllToLeft()” value=“<< RemoveAll” />         </div>         <div id=“div13”>             <select id=“select2” multiple=“multiple”>                 <option id=“op1”>HHHHHHHHHHHHHHH</option>                 <option id=“op1”>IIIIIIIIIIIIIII</option>                 <option id=“op1”>JJJJJJJJJJJJJJJ</option>                 <option id=“op1”>OOOOOOOOOOOOOOO</option>                 <option id=“op1”>PPPPPPPPPPPPPPP</option>             </select>         </div>     </div> </body> <script type=“text/javascript”>     function selectToRight() {         到select1标签 // 2.得到select标签的子标签           // 4.判断是否被选中         /*          *  选中      未选中          */         var select1 = document.getElementById(“select1”);         varselect2 =document.getElementById(“select2”);         // 2.得到select标签的子标签         var options = select1.options;         // 3.遍历子标签数组,  /*          * i=0 length = 5           * i=1 lenght = 5          */         for (var i = 0; i < options.length; i++) {             var op = options[i];             // 4.判断是否被选中             if(op.selected ==true) {                // 添加到select2中                select2.add(op);                -;             }         }     }function selecAllToRight() {           var select1 = document.getElementById(“select1”);         var select2 = document.getElementById(“select2”);         // 得到标签中大部份的子标签         var options = select1.options;         // 遍历子标签数组,得到每一个子标签         for (var i = 0; i < options.length; i++) {             var op = options[i];             // 添// 将每一个子标签添加到select2中  select2.add(op);           -;         }     }    function selectToLeft() {        select1标签 var select1 = document.getElementById(“select1”);         var select2 = document.getElementById(“select2”);         // 2.得到select标签的子标签         var options = select2.options;           /*          * i=0 length = 5           * i=1 lenght = 5          *           */         for (var i = 0; i < options.length; i++) {             var op = options[i];             // 4.判断是否被选中             if (op.selected == true) {                 // 添加到select2中select1.add(op);           -;             }         }     }function selecAllToLeft() {         var select1 = document.getElementById(“select1”);         varselect2 =document.getElementById(“select2”);         // 得到标签中大部份的子标签         var options = select2.options;         // 遍历子标签数组,得到每一个子标签         for (var i = 0; i < options.length; i++) {             varop = options[i];             select1.add(op);             i–;         }     }</script> </html> 二级联动案例如下所示: <!DOCTYPE html> <html> <head>     <meta charset=“UTF-8”>     <title>三级联动</title> </head> <body>     <select id=“country” onchange=“addToSelect(this.value);”>         <option value=“0”>–请选择–</option>         <option value=“中国”>中国</option>         <option value=“美国”>美国</option>         <option value=“英国”>英国</option>         <option value=“日本”>日本</option>     </select>     <select id=“city”></select> </body> <script type=“text/javascript”>     // 表述数据源     var chinaArr = [“北京”“上海”“南京”“南昌”];     var americaArr = [“华盛顿”,“纽约”“底特律”“费城”];     var englandArr = [“伦敦”];     var japanArr = [“广岛”“长崎”“东京”“大阪”];     var country = new Array(4);     country[0] = [“中国”, chinaArr];     country[1] = [“美国”, americaArr];     country[2] = [“英国”, englandArr];     country[3] = [“日本”, japanArr];     function addToSelect(selectValue{         //          alert(selectValue);                 var countrySelect = document.getElementById(“country”);         var citySelect = document.getElementById(“city”);                  varops = citySelect.getElementsByTagName(“option”);         for (var i = 0; i < ops.length; i++) {             varop = ops[i];// 移除option             citySelect.removeChild(op);  -;         }                 for (var i = 0; i < country.length; i++) {             var arr1 = country[i];             var firstValue = arr1[0];             // 判断是否和传入的值相同             if (firstValue == selectValue) {                 var otherValueArr = arr1[1];                 for (var j = 0; j < otherValueArr.length; j++) { var value = otherValueArr[j];                     // 创建option节点                     var optionEle = document.createElement(“option”);                     // 创建文本节点                     var textNode = document.createTextNode(value);                     // 将文本添加到option当中                    optionEle.appendChild(textNode);// 将option添加到city选项中                    citySelect.appendChild(optionEle);                 }             }         }     }</script> </html>

相关文章

发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务