Jvascript学习实践案例(开发常用)


Posted in Javascript onJune 25, 2012

一个自定义的循环遍历元素文本内容的函数

该函数可以确保在HTML和XML DOM文档中很好的工作,使用该函数,就能够获取任何元素文本内容了
循环遍历元素文本内容

<html> 
<head> 
<meta http-equiv="Content-type" content="text/html;charset=gb2312"> 
<title>一个循环遍历元素文本内容的函数</title> 
</head> 
<body> 
<div id="test"> 
<ul> 
<li><a href="#">a标签1</a></li> 
<li><a href="#">a标签2</a></li> 
<li><a href="#">a标签3</a></li> 
<li><a href="#">a标签4</a></li> 
</ul> 
</div> 
<script type="text/javascript"> 
<!-- 
function text(e){ 
//如果传入的是元素,则继续遍历其子元素,否则假定他是一个数组 
e=e.childNodes || e; 
var t=""; 
//遍历所有的子节点 
for(var i=0;i<e.length;i++){ 
if(e[i].nodeType!=1){//如果不是元素节点,则追加其文本值 
t+=e[i].nodeValue+"<br>"; 
}else{ 
t+=text(e[i].childNodes);//否则,继续递归调用 
} 
} 
return t; 
} 
var obj=document.getElementById('test'); 
var text=text(obj); 
document.write(text); 
//--> 
</script> 
</body> 
</html>

通常,我们使用previousSibling,nextSibling,firstChild,lastChild等等来遍历DOM文档,但是,往往会将文本节点也遍历出来,一般情况下,我们不大需要遍历文本节点。所以,这里,我们可以使用自定义的几个函数将previousSibling,nextSibling,firstChild,lastChild封装起来,跳过遍历到的文本节点,而直接取得元素节点
查找节点的几个替代函数
<html> 
<head> 
<meta http-equiv="Content-type" content="text/html;charset=gb2312"> 
<title>previousSibling,nextSibling,firstChild,lastChild和parentNode的替代函数</title> 
<script type="text/javascript"> 
<!-- 
//查找当前元素的前一个兄弟元素节点(注意是元素节点而不是文本节点) 
function prev(o){ 
do{ 
o=o.previousSibling; 
}while(o.nodeType!=1 && o);//如果前一个兄弟节点是元素节点则跳出循环 
return o; 
} 
//查找当前元素的下一个兄弟元素节点(注意是元素节点而不是文本节点) 
function next(o){ 
do{ 
o=o.nextSibling; 
}while(o.nodeType!=1 && o);//如果下一个兄弟节点是元素节点则跳出循环 
return o; 
} 
//查找元素的第一个子元素的函数 
function first(o){ 
o=o.firstChild; 
return o.nodeType!=1 && o ? next(o) : o;//如果第一个子节点是元素节点,则返回,否则调用next函数,查找下一个兄弟元素 
} 
//查找元素的最后一个子元素的函数 
function last(o){ 
o=o.lastChild; 
return o.nodeType!=1 && o ? prev(o) : o;//如果最后一个子节点是元素节点,则返回,否则调用prev函数,查找前一个兄弟元素 
} 
//--> 
</script> 
</head> 
<body> 
<div id="test"> 
<p>大部分的WEB开发者在大多数情况下仅仅需要遍历DOM元素而非相邻的文本节点</p> 
<p>所以,我们可以自己定义几个函数用于替代<b>previousSibling,nextSibling,firstChild,lastChild和parentNode</b></p> 
<ul> 
<li><a href="#">a标签1</a></li> 
<li><a href="#">a标签2</a></li> 
<li><a href="#">a标签3</a></li> 
<li><a href="#">a标签4</a></li> 
</ul> 
</div> 
<script type="text/javascript"> 
<!-- 
var obj=document.getElementById('test'); 
document.write("使用nextSibling返回的div元素的下一个兄弟节点,①节点类型:"+obj.nextSibling.nodeType+"②节点名称:"+obj.nextSibling.nodeName+"<br>"); 
document.write("使用自定义的next函数返回的div元素的下一个兄弟元素,①节点类型:"+next(obj).nodeType+"②节点名称:"+next(obj).nodeName+"<br>"); 
document.write("使用firstChild返回的div元素的第一个子节点,①节点类型:"+obj.firstChild.nodeType+"②节点名称:"+obj.firstChild.nodeName+"<br>"); 
document.write("使用自定义的first函数返回的div元素的第一个子元素,①节点类型:"+first(obj).nodeType+"②节点名称:"+first(obj).nodeName+"<br>"); 
document.write("使用lastChild返回的div元素的最后一个子节点,①节点类型:"+obj.lastChild.nodeType+"②节点名称:"+obj.lastChild.nodeName+"<br>"); 
document.write("使用自定义的last函数返回的div元素的最后一个子元素,①节点类型:"+last(obj).nodeType+"②节点名称:"+last(obj).nodeName+"<br>"); 
//--> 
</script> 
</body> 
</html>

获取表单对象的 7 种方式
多种获取表单对象的方式
<html> 
<head> 
<title>获取表单对象的 7 种方式</title> 
</head> 
<body> 
<form name="myform"> 
<input type="text" value="获取表单对象的 7 种方式" name="test"> 
</form> 
<script type="text/javascript"> 
<!-- 
document.write("方式1:"+document.myform.test.value+"<br>");//经常用 
document.write("方式2:"+document.forms[0].test.value+"<br>");//通过下标索引访问,较常用 
document.write("方式3:"+document.forms['myform'].test.value+"<br>"); //方式3和方式4可以切换的,这是源于js访问对象的方式可以采用数组形式来访问的缘故 
document.write("方式4:"+document.forms.myform.test.value+"<br>"); 
document.write("方式5:"+document['myform'].test.value+"<br>"); 
document.write("方式6:"+document.forms.item(0).test.value+"<br>");//注意 是item(),不是item[] 
document.write("方式7:"+document.forms.item('myform').test.value+"<br>"); 
//--> 
</script> 
</body> 
</html>

使用javascript实现全选,反选,全不选的功能
<html> 
<head> 
<title>全选,反选,全不选</title> 
</head> 
<body> 
<script type="text/javascript"> 
<!-- 
for (var i=0;i<20;i++){ 
document.write('测试'+(i+1)+'<input type="checkbox" name="sel[]"><br>'); 
} 
var o=document.getElementsByName("sel[]");//全局变量 
//全选 
function selall(){ 
for(var i=0;i<o.length;i++){ 
o[i].checked="true"; 
} 
} 
//全不选 
function noselall(){ 
for(var i=0;i<o.length;i++){ 
o[i].checked=""; 
} 
} 
//反选 
function invert(){ 
for(var i=0;i<o.length;i++){ 
if(o[i].checked==true){ 
o[i].checked=""; 
}else{ 
o[i].checked=true; 
} 
} 
} 
//--> 
</script> 
<a href="javascript:selall(this)">全选</a> 
<a href="javascript:noselall(this)">全不选</a> 
<a href="javascript:invert(this)">反选</a> 
</body> 
</html>

鼠标移上去,显示子栏目列表

Jvascript学习实践案例(开发常用)

显示隐藏菜单 
<html> 
<head> 
<title>操作菜单</title> 
<style> 
li{ 
list-style:none; 
} 
#menu ul li{ 
float:left; 
width:75px; 
height:30px; 
text-align:center; 
} 
#submenu{ 
clear:both; 
} 
#submenu ul li{ 
background:#888; 
width:236px; 
} 
#submenu ul li a{ 
color:#fff; 
text-decoration:none; 
} 
.highlight{ 
background:#888; 
} 
</style> 
</head> 
<body> 
<div id="menu"> 
<ul> 
<li onmouseover="change(0)" class="highlight">Menu1</li> 
<li onmouseover="change(1)">Menu2</li> 
<li onmouseover="change(2)">Menu3</li> 
</ul> 
</div> 
<div id="submenu"> 
<ul> 
<li> 
<a href="#">子菜单1</a><br> 
<a href="#">子菜单1</a><br> 
<a href="#">子菜单1</a><br> 
<a href="#">子菜单1</a><br> 
</li> 
<li style="display:none"> 
<a href="#">子菜单2</a><br> 
<a href="#">子菜单2</a><br> 
<a href="#">子菜单2</a><br> 
<a href="#">子菜单2</a><br> 
</li> 
<li style="display:none"> 
<a href="#">子菜单3</a><br> 
<a href="#">子菜单3</a><br> 
<a href="#">子菜单3</a><br> 
<a href="#">子菜单3</a><br> 
</li> 
</ul> 
</div> 
<script type="text/javascript"> 
<!-- 
var menu=document.getElementById("menu").getElementsByTagName("li"); 
var submenu=document.getElementById('submenu').getElementsByTagName('li'); 
function change(num){ 
for (var i=0;i<menu.length;i++){ 
if(i==num){ 
menu[num].className="highlight"; 
submenu[num].style.display="block"; 
}else{ 
menu[i].className=""; 
submenu[i].style.display="none"; 
} 
} 
} 
//--> 
</script> 
</body> 
</html>

通过for...in循环语句,可以遍历出某个对象中的属性
比如,我们想要看下document对象中的所有属性名和属性值,可以使用如下所示的代码:
View Code <html> 
<head> 
<title>遍历document文档对象的所有属性</title> 
</head> 
<body> 
<script type="text/javascript"> 
<!-- 
for (var pro in document){ 
document.write("document."+pro+"="+document[pro]+"<br>"); 
} 
//--> 
</script> 
</body> 
</html>

同理,我们也可以用以上方法遍历window对象,location对象,history对象等的属性,当然,也可以用来遍历自定义对象的属性
Javascript 相关文章推荐
JavaScript DOM 学习第七章 表单的扩展
Feb 19 Javascript
jquery.boxy弹出框(后隔N秒后自动隐藏/自动跳转)
Jan 15 Javascript
javascript 判断字符串是否包含某字符串及indexOf使用示例
Oct 18 Javascript
jQuery 选择器详解
Jan 19 Javascript
Javascript自执行匿名函数(function() { })()的原理浅析
May 15 Javascript
JS实现线性表的顺序表示方法示例【经典数据结构】
Apr 11 Javascript
jQuery Masonry瀑布流布局神器使用详解
May 25 jQuery
JS实现移动端判断上拉和下滑功能
Aug 07 Javascript
React props和state属性的具体使用方法
Apr 12 Javascript
Vue实现侧边菜单栏手风琴效果实例代码
May 31 Javascript
JavaScript函数定义方法实例详解
Mar 05 Javascript
浅谈JavaScript_DOM学习篇_图片切换小案例
Mar 19 Javascript
来自国外的30个基于jquery的Web下拉菜单
Jun 22 #Javascript
增强用户体验友好性之jquery easyui window 窗口关闭时的提示
Jun 22 #Javascript
用js判断页面刷新或关闭的方法(onbeforeunload与onunload事件)
Jun 22 #Javascript
javascript作用域容易记错的两个地方分析
Jun 22 #Javascript
基于Jquery实现的一个图片滚动切换
Jun 21 #Javascript
javascript学习笔记(二十) 获得和设置元素的特性(属性)
Jun 20 #Javascript
javascript学习笔记(十九) 节点的操作实现代码
Jun 20 #Javascript
You might like
PHP+Mysql+jQuery实现发布微博程序 jQuery篇
2011/10/08 PHP
php导入导出excel实例
2013/10/25 PHP
利用Fix Rss Feeds插件修复WordPress的Feed显示错误
2015/12/19 PHP
javascript 函数调用规则
2009/08/26 Javascript
Javascript 复制数组实现代码
2009/11/26 Javascript
Chrome Form多次提交表单问题的解决方法
2011/05/09 Javascript
JS中的this变量的使用介绍
2013/10/21 Javascript
jQuery打印图片pdf、txt示例代码
2014/07/22 Javascript
详解AngularJS中的filter过滤器用法
2016/01/04 Javascript
javascript实现九宫格相加数值相等
2020/05/28 Javascript
在js中实现邮箱格式的验证方法(推荐)
2016/10/24 Javascript
ASP.NET jquery ajax传递参数的实例
2016/11/02 Javascript
Vuex中mutations与actions的区别详解
2018/03/01 Javascript
vue加载完成后的回调函数方法
2018/09/07 Javascript
zepto.js 实时监听输入框的方法
2018/12/04 Javascript
三步实现ionic3点击退出app程序
2019/09/17 Javascript
vue 更改连接后台的api示例
2019/11/11 Javascript
JavaScript 严格模式(use strict)用法实例分析
2020/03/04 Javascript
vue router返回到指定的路由的场景分析
2020/11/10 Javascript
jQuery是用来干什么的 jquery其实就是一个js框架
2021/02/04 jQuery
python使用BeautifulSoup分析网页信息的方法
2015/04/04 Python
Windows下用py2exe将Python程序打包成exe程序的教程
2015/04/08 Python
python处理大日志文件
2019/07/23 Python
Python 脚本拉取 Docker 镜像问题
2019/11/10 Python
python 消除 futureWarning问题的解决
2019/12/25 Python
python数据分析:关键字提取方式
2020/02/24 Python
django admin后管定制-显示字段的实例
2020/03/11 Python
Python tkinter实现简单加法计算器代码实例
2020/05/13 Python
python爬虫中url管理器去重操作实例
2020/11/30 Python
Internet主要有哪些网络群组成
2015/12/24 面试题
公司司机岗位职责范本
2014/03/03 职场文书
企业办公室岗位职责
2014/03/12 职场文书
学习经验交流会主持词
2014/04/01 职场文书
Redis可视化客户端小结
2021/06/10 Redis
Go获取两个时区的时间差
2022/04/20 Golang
MySQL详细讲解变量variables的用法
2022/06/21 MySQL