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 相关文章推荐
基于jquery实现的文字淡入淡出效果
Nov 14 Javascript
一个js控制的导航菜单实例代码
Dec 03 Javascript
jquery教程ajax请求json数据示例
Jan 13 Javascript
jquery解析JSON数据示例代码
Mar 17 Javascript
关闭时刷新父窗口两种方法
May 07 Javascript
js获取图片宽高的方法
Nov 25 Javascript
Angularjs 实现分页功能及示例代码
Sep 14 Javascript
基于js中的原型(全面讲解)
Sep 19 Javascript
JavaScript数组去重的多种方法(四种)
Sep 19 Javascript
easyui下拉框动态级联加载的示例代码
Nov 29 Javascript
vue单页开发父子组件传值思路详解
May 18 Javascript
vue如何引入sass全局变量
Jun 28 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 字符串函数收集
2010/03/29 PHP
PHP程序级守护进程的实现与优化的使用概述
2013/05/02 PHP
用php制作简单分页(从数据库读取记录)的方法详解
2013/05/04 PHP
PHP实现自动识别原编码并对字符串进行编码转换的方法
2016/07/13 PHP
jquery实现兼容浏览器的图片上传本地预览功能
2013/10/14 Javascript
js 左右悬浮对联广告代码示例
2014/12/12 Javascript
Javascript基础教程之数据类型转换
2015/01/18 Javascript
JS中Location使用详解
2015/05/12 Javascript
使用postMesssage()实现跨域iframe页面间的信息传递方法
2016/03/29 Javascript
jQuery实现区域打印功能代码详解
2016/06/17 Javascript
JavaScript组合模式学习要点
2016/08/26 Javascript
Javascript 对cookie操作详解及实例
2016/12/29 Javascript
快速实现JS图片懒加载(可视区域加载)示例代码
2017/01/04 Javascript
JS实现HTML标签转义及反转义
2020/04/14 Javascript
微信小程序开发的四十个技术窍门总结(推荐)
2017/01/23 Javascript
jQuery给表格添加分页效果
2017/03/02 Javascript
vue配置请求本地json数据的方法
2018/04/11 Javascript
elementUI多选框反选的实现代码
2019/04/03 Javascript
vue实现绑定事件的方法实例代码详解
2019/06/20 Javascript
详解Jest结合Vue-test-utils使用的初步实践
2019/06/27 Javascript
Weex开发之WEEX-EROS开发踩坑(小结)
2019/10/16 Javascript
原生js+canvas实现下雪效果
2020/08/02 Javascript
微信小程序实现页面左右滑动
2020/11/16 Javascript
python+selenium实现京东自动登录及秒杀功能
2017/11/18 Python
如何在django里上传csv文件并进行入库处理的方法
2019/01/02 Python
Python 隐藏输入密码时屏幕回显的实例
2019/02/19 Python
Python在Matplotlib图中显示中文字体的操作方法
2019/07/29 Python
Python Flask框架实现简单加法工具过程解析
2020/06/03 Python
Python爬虫headers处理及网络超时问题解决方案
2020/06/19 Python
Python字符串的15个基本操作(小结)
2021/02/03 Python
党校学习思想汇报
2014/01/06 职场文书
法院干警四风问题自我剖析材料
2014/09/29 职场文书
乡镇党的群众路线教育实践活动制度建设计划
2014/11/03 职场文书
网站文案策划岗位职责
2015/04/14 职场文书
李白经典诗之一:全文无一“月”字,却句句有月
2019/07/12 职场文书
Python爬虫之爬取二手房信息
2021/04/27 Python