节点的移动,insertBefore

 <body>
<p>你喜欢哪个城市?</p>
<ul id="city"><li id="bj" name="BeiJing">北京</li>
<li>上海</li>
<li id="dj">东京</li>
<li id="se">首尔</li>
</ul>
<br><br>
<p>你喜欢哪款单机游戏?</p>
<ul id="game">
<li id="rl">红警</li>
<li id="sk">实况</li>
<li>极品飞车</li>
<li>魔兽</li>
</ul> <br><br>
gender:
<input type="radio" name="gender" value="male"/>Male
<input type="radio" name="gender" value="female"/>Female <br><br>
name: <input type="text" name="username" value="atguigu"/> </body>
 <script type="text/javascript">
window.onload=function(){ alert("把红警插入到北京之前");
//insertBefore(a,b) 把a查到b的前面
//获取北京这个节点
var bjnode=document.getElementById("bj");
//获取红警节点
var hj=document.getElementById("rl");
//获取 北京的父类节点city 因为这是往city的子节点中插入节点
var city=document.getElementById("city");
city.insertBefore(hj,bjnode);
//运行之后 把红警移动到了北京之前 实现了移动
}
</script>

运行效果:

单击确定

父节点.insertBefore(a,b);的作用是把a节点移动到b节点之前,所以父节点其实就是b节点的父节点,因为是往该节点中的子节点中做添加,但是JavaScript却没有提供insertAfter(a,b)方法 这个方法作用就是把某个节点a插入到某个节点b之后,而我们通过
b.nextSibling[获取xxx节点的下一个兄弟节点c]方法就能够实现功能,然后把a插入到下一个兄弟节点之前就可以了 .insertBefore(a,c)
-----------------------------------------------
innerHtml方法,能够获取某个节点中的全部html内容
 <!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title></title>
<script type="text/javascript">
window.onload=function(){
var city=document.getElementById("city");//获取city元素节点
alert(city.innerHTML);//打印city节点中的html内容
}
</script>
</head>
<body>
<p>你喜欢哪个城市?</p>
<ul id="city"><li id="bj" name="BeiJing">北京</li>
<li>上海</li>
<li>东京</li>
<li>首尔</li>
</ul> <br><br>
<p>你喜欢哪款单机游戏?</p>
<ul id="game">
<li id="rl">红警</li>
<li>实况</li>
<li>极品飞车</li>
<li>魔兽</li>
</ul> <br><br>
gender:
<input type="radio" name="gender" value="male"/>Male
<input type="radio" name="gender" value="female"/>Female <br><br>
name: <input type="text" name="username" value="atguigu"/> </body>
</html>

运行效果:

 下面使用该方法,实现两个节点中的子节点之间的内容全部交换位置

     <script type="text/javascript">
window.onload=function(){
var city=document.getElementById("city");//获取city元素节点
// alert(city.innerHTML);//打印city节点中的html内容
var game=document.getElementById("game");//获取game元素节点
alert("交换之前");
var temp=city.innerHTML;//创建中间变量
city.innerHTML=game.innerHTML;//把game的innerHtml赋值给city的innerHtml
game.innerHTML=temp;
//完成交换 }
</script>

运行效果:

单击确定

-------------------------------------------------

select级联菜单实现(IE下支持)

 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Untitled Document</title>
<script type="text/javascript"> window.onload = function(){ //1. 为 #province 添加 onchange 响应函数
document.getElementById("province").onchange = function(){ //1.1 把 #city 节点除第一个子节点外都移除.
var cityNode = document.getElementById("city");
var cityNodeOptions = cityNode.getElementsByTagName("option"); var len = cityNodeOptions.length;
for(var i =1; i < len; i++){
cityNode.removeChild(cityNodeOptions[1]);//每次都清除第一个内容 除了“请选择”之外的内容最后都会被清除
} var provinceVal = this.value;
if(provinceVal == ""){//如果用户选择的第一列中选择了 “请选择” 这个列 那么就不在执行下面的内容 因为加载不到任何内容
return;
} //2. 加载 cities.xml 文件. 得到代表给文档的 document 对象
var xmlDoc = parseXml("cities.xml"); //3. 在 cities.xml 文档中查找和选择的省匹配的 province 节点. //直接使用 XPath 技术查找 XML 文档中匹配的节点.
var provinceEles = xmlDoc.selectNodes("//province[@name='"
+ provinceVal + "']");
/* 另外一种方式 逐个比较 然后获得对应的节点
var prochild=xmlDoc.getElementsByTagName("province");
//alert(prochild.length);
for(var i=0;i<prochild.length;i++){
//alert(prochild[i].getAttributeNode("name").value);
if(prochild[i].getAttributeNode("name").nodeValue==this.value){
alert("a1");
var xxxx=prochild[i];
alert("a2");
break;
}
}
var cityNodes=xxxx.getElementsByTagName("city");
*/ //4. 再得到 province 节点的所有的 city 子节点
var cityNodes = provinceEles[0].getElementsByTagName("city"); //5. 遍历 city 子节点, 得到每一个 city 子节点的文本值
for(var i = 0; i < cityNodes.length; i++){
//6. 利用得到的文本值创建 option 节点
//<option>cityName</option>
var cityText = cityNodes[i].firstChild.nodeValue;
var cityTextNode = document.createTextNode(cityText);
var optionNode = document.createElement("option");
optionNode.appendChild(cityTextNode); //7. 并把 6 创建的 option 节点添加为 #city 的子节点.
cityNode.appendChild(optionNode);
} } //js 解析 xml 文档的函数, 只支持 ie
function parseXml(fileName){
//IE 内核的浏览器
if (true) {//(window.ActiveXObject)的作用,用来判断浏览器是否支持ActiveX控件 使用ie功能可以实现 使用360没反应
//创建 DOM 解析器
var doc = new ActiveXObject("Microsoft.XMLDOM");
doc.async = "false";
//加载 XML 文档, 获取 XML 文档对象
doc.load(fileName);
return doc;
}
} // function parseXml(fileName)
// {alert("a0");
// //IE 内核的浏览器
// if (window.ActiveXObject)
// {
// alert("a1");
// // 创建 DOM 解析器
// var doc = new ActiveXObject("Microsoft.XMLDOM");
// alert("a2");
// doc.async = "false";
// // 加载 XML 文档 , 获取 XML 文档对象
// alert("a3");
// doc.load(fileName);
// alert("a4");
// return doc;
// }
// //Mozilla 浏览器
// else if (window.DOMParser)
// {
// // 创建 DOM 解析器
// var p = new DOMParser();
// // 创建 DOM 解析器
// return p.parseFromString(fileName, "text/xml");
// }
// else
// {
// return false;
// }
// } } </script> </head>
<body>
<select id="province">
<option value="">请选择...</option>
<option value="河北省">河北省</option>
<option value="辽宁省">辽宁省</option>
<option value="山东省">山东省</option>
</select> <select id="city"><option value="">请选择...</option></select>
</body>
</html>
cities.xml
 <?xml version="1.0" encoding="GB2312"?>
<china> <province name="河北省">
<city>石家庄</city>
<city>邯郸</city>
</province> <province name="辽宁省">
<city>沈阳</city>
<city>大连</city> </province> <province name="山东省">
<city>济南</city>
<city>青岛</city> </province> </china>

运行效果;

---------------------------------------------------------

 Checkbox全选操作

 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<script type="text/javascript"> //需求: 若 #checkedAll_2 被选中, 则 name=items 的 checkbox 都被选中
//若 #checkedAll_2 取消选中, 则 name=items 的 checkbox 都取消选中
//若 name=items 的 checkbox 都被选中, 则 #checkedAll_2 的 checkbox 也被选中
//若 name=items 的 checkbox 有一个没有被选中, 则 #checkedAll_2 取消选择. //提示: 事件需要加给 #checkedAll_2, 获取 name=items 的 checkbox 数组
//判断是否被选中, 若被选择, 则 name=items 的 checkbox 都要被选择
//若没有被选择, 则 name=items 的 checkbox 都要取消选择
//根据是否存在 checked 属性来判断是否被选择, 可以使其 checked = true 被选择
//checked = false 取消选择. //还需要给每个 name=items 的 checkbox 加响应函数
//判断 name=items 的 checkbox 是否都被选中: 选择的个数和总个数是否相等.
//若都被选择: 则使 #checkedAll_2 被选择
//若没有都被选择: 则使 #checkedAll_2 取消选择
window.onload=function(){
//为全选按钮加事件
var items=document.getElementsByName("items");
document.getElementById("checkedAll_2").onclick=function(){
var flag=this.checked;
//获取所有的items节点 for(var i=0;i<items.length;i++){
items[i].checked=flag;
}
}
//为每个选项也要加事件
for(var i=0;i<items.length;i++){
items[i].onclick=function(){
//每次单击 都要判断已经被选中的个数是否==总个数items.length
var count=0;
for(var j=0;j<items.length;j++){
if(items[j].checked){
count++;
}
}
document.getElementById("checkedAll_2").checked=(items.length==count);
} } //为全选按钮添加事件
document.getElementById("CheckedAll").onclick=function(){
for(var i=0;i<items.length;i++){
items[i].checked=true;
}
}
//为全 不选按钮添加单击事件
document.getElementById("CheckedNo").onclick=function(){
for(var i=0;i<items.length;i++){
items[i].checked=false;
}
}
//为反选按钮增加事件
document.getElementById("CheckedRev").onclick=function(){
//以前的选择为true 则变为false 即以前的取反
for(var i=0;i<items.length;i++){
items[i].checked=!items[i].checked;//取反操作
}
} //提交事件
document.getElementById("send").onclick=function(){
//以前的选择为true 则变为false 即以前的取反
for(var i=0;i<items.length;i++){
if(items[i].checked){
alert(items[i].value);//输出那些被选中的内容
}
}
}
}
</script>
</head>
<body> <form method="post" action="">
你爱好的运动是?<input type="checkbox" id="checkedAll_2" />全选/全不选 <br /> <input
type="checkbox" name="items" value="足球" />足球 <input type="checkbox"
name="items" value="篮球" />篮球 <input type="checkbox" name="items"
value="羽毛球" />羽毛球 <input type="checkbox" name="items" value="乒乓球" />乒乓球
<br /> <input type="button" id="CheckedAll" value="全 选" /> <input
type="button" id="CheckedNo" value="全不选" /> <input type="button"
id="CheckedRev" value="反 选" /> <input type="button" id="send"
value="提 交" />
</form> </body>
</html>

运行效果:

 

JavaScript(DOM编程三)的更多相关文章

  1. 读书笔记:JavaScript DOM 编程艺术(第二版)

    读完还是能学到很多的基础知识,这里记录下,方便回顾与及时查阅. 内容也有自己的一些补充. JavaScript DOM 编程艺术(第二版) 1.JavaScript简史 JavaScript由Nets ...

  2. JavaScript DOM 编程艺术·setInterval与setTimeout的动画实现解析

    先贴上moveElement()函数的大纲,为了方便观看,删了部分代码,完整版粘到文章后面. function moveElement(elementID,final_x,final_y,interv ...

  3. JavaScript DOM编程艺术第一章:JavaScript简史

    本系列的博客是由本人在阅读<JavaScript DOM编程艺术>一书过程中做的总结.前面的偏理论部分都是书中原话,觉得有必要记录下来,方便自己翻阅,也希望能为读到本博客的人提供一些帮助, ...

  4. JavaScript DOM编程艺术读后感(1)—— 平稳退化

    最近,在读<JavaScript DOM编程艺术(第二版)>这本书,想着将自己的读后感记录下来,作为记忆吧. 其实我并不是最近才刚开始读这本书的,我读了有一段时间了.我是一名web前端开发 ...

  5. Java web JavaScript DOM 编程

     JavaScript DOM 编程 (1).DOM概述及分类 (2).DOM结构模型:XML DOM 和 HTML DOM 关系? (3).结点,结点树,结点属性与方法? 1.DOM是什么? d ...

  6. javascript Dom 编程

     javascript Dom  编程 知识概要: (1)Dom是什么? (2)Dom结构模型 (3)XML DOM和 HTML DOM (4)NODE接口的特性和方法 (5)DOM结点的常用属性 ...

  7. 《JavaScript Dom 编程艺术》读书笔记-第4章

    我的前端入门第一本书是<JavaScript Dom 编程艺术>,网上查找资料发现前端的入门推荐书籍最受好评的就是这本和<JavaScript 高级程序设计>了.之所以先选这本 ...

  8. Javascript DOM 编程艺术(第二版)读书笔记——基本语法

    Javascript DOM 编程艺术(第二版),英Jeremy Keith.加Jeffrey Sambells著,杨涛.王建桥等译,人民邮电出版社. 学到这的时候,我发现一个问题:学习过程中,相当一 ...

  9. 《JavaScript DOM 编程艺术》 学习笔记

    目录 <JavaScript DOM 编程艺术> 学习笔记 第一章 js简史 第二章 js语法 准备工作 语法 第三章 DOM DOM中的D DOM中的O DOM中的M 第四章 js图片库 ...

随机推荐

  1. Django 介绍、安装配置、基本使用、Django 用户注冊样例

    Django介绍         Django 是由 Python 开发的一个免费的开源站点框架.能够用于高速搭建高性能.优雅的站点.              DjangoMTV 的思想项目架构图 ...

  2. 复制DropDownList

    DropDownList ddlA; ListItem[] ar = new ListItem[ddlB.Items.Count]; ddlB.Items.CopyTo(ar,0); ddlA.Dat ...

  3. jquery事件重复绑定的几种解决方法

    防止事件重复绑定共有4种方法: bind().unbind()方法 live().die()方法 off().on()方法 one()方法 一.bind().unbind()方法 bind();绑定事 ...

  4. JS轮播图动态渲染四种方法

    一. 获取轮播图数据  ajax 二.根据数据动态渲染 (根据当前设备 屏幕宽度判断) 1. 准备数据 2. 把数据转换成html格式的字符串 动态创建元素 字符串拼接 模板引擎 框架方法 2.把字符 ...

  5. ROS-tutorials-launch-查看日志

    前言:launch文件的作用是一次可以启动多个节点. 1.新建launch文件 在chapter2_tutorials包下新建launch文件夹,并在launch文件夹下新建chapter2.laun ...

  6. .net中的母版页中使用FindControl的使用

    前几天,遇到一个字段比较多的用户填写的页面(数据库表中就将近100个字段),怎么讲这些input的标签的值,保存数据库了?(使用的是母版页下面的aspx,不包括前段获取input的值,传给后台) 作为 ...

  7. MongoDB: The Definitive Guide

    第一章 简介 MongoDB是面向文档的数据库,不是关系型数据库.内置对MapReduce的支持,以及对地理空间索引的支持. 丰富的数据模型 容易扩展,它所采用的面向文档的数据模型可以使其在多台服务器 ...

  8. (转载) android studio library生成jar包和aar的方法总结

    android studio library生成jar包和aar的方法总结 标签: android学习文档jar和aar的使用与生成gradle 2016-11-25 10:39 1782人阅读 评论 ...

  9. LeetCode 75. Sort Colors (python一次遍历,模拟三路快排)

    LeetCode 75. Sort Colors (python一次遍历,模拟三路快排) 题目分析: 本题需要实现数字只包含0,1,2的排序,并且要求一次遍历. 由于只用把数字隔离开,很容易想到快排的 ...

  10. VHDL_LIB之DFF

    1 D-Flip-Flop with async reset or set library IEEE; use ieee.std_logic_1164.all; entity FFD is gener ...