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 相关文章推荐
JS正则中的RegExp对象对象
Nov 07 Javascript
jQuery中$.fn的用法示例介绍
Nov 05 Javascript
jQuery封装的获取Url中的Get参数示例
Nov 26 Javascript
jquery中load方法的用法及注意事项说明
Feb 22 Javascript
javascript实现依次输入input自动定焦
Dec 23 Javascript
jQuery zclip插件实现跨浏览器复制功能
Nov 02 Javascript
js中flexible.js实现淘宝弹性布局方案
Jun 23 Javascript
jQuery中bind(),live(),delegate(),on()绑定事件方法实例详解
Jan 19 Javascript
详解Angular的内置过滤器和自定义过滤器【推荐】
Dec 26 Javascript
Vue.js 时间转换代码及时间戳转时间字符串
Oct 16 Javascript
一起写一个即插即用的Vue Loading插件实现
Oct 31 Javascript
微信小程序云函数添加数据到数据库的方法
Mar 04 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利用hash冲突漏洞进行DDoS攻击的方法分析
2015/03/26 PHP
Laravel框架生命周期与原理分析
2018/06/12 PHP
phpMyAdmin通过密码漏洞留后门文件
2018/11/20 PHP
fix-ie5.js扩展在IE5下不能使用的几个方法
2007/08/20 Javascript
js 实现在离开页面时提醒未保存的信息(减少用户重复操作)
2013/01/16 Javascript
Jquery实现自定义弹窗示例
2014/03/12 Javascript
JavaScript代码应该放在HTML代码哪个位置比较好?
2014/10/16 Javascript
jquery提示效果实例分析
2014/11/25 Javascript
node.js中的fs.fchmod方法使用说明
2014/12/16 Javascript
Lab.js初次使用笔记
2015/02/28 Javascript
谈谈JavaScript类型系统之Math
2016/01/06 Javascript
jQuery基于muipicker实现仿ios时间选择
2016/02/22 Javascript
js组件SlotMachine实现图片切换效果制作抽奖系统
2016/04/17 Javascript
jQuery代码实现对话框右上角菜单带关闭×
2016/05/03 Javascript
谈谈对JavaScript原生拖放的深入理解
2016/09/20 Javascript
全面解析node 表单的图片上传
2016/11/21 Javascript
js return返回多个值,通过对象的属性访问方法
2017/02/21 Javascript
基于vue-resource jsonp跨域问题的解决方法
2018/02/03 Javascript
Koa2 之文件上传下载的示例代码
2018/03/29 Javascript
Vue配置marked链接添加target=&quot;_blank&quot;的方法
2019/07/19 Javascript
前端vue-cli项目中使用img图片和background背景图的几种方法
2019/11/13 Javascript
详解JavaScript 作用域
2020/07/14 Javascript
js+h5 canvas实现图片验证码
2020/10/11 Javascript
python 将字符串转换成字典dict
2013/03/24 Python
Python实现数通设备端口使用情况监控实例
2015/07/15 Python
Linux中Python 环境软件包安装步骤
2016/03/31 Python
Python装饰器模式定义与用法分析
2018/08/06 Python
python 杀死自身进程的实现方法
2019/07/01 Python
MxNet预训练模型到Pytorch模型的转换方式
2020/05/25 Python
哥德堡通行证:Gothenburg Pass
2019/12/09 全球购物
JNI的定义
2012/11/25 面试题
如何写一份好的自荐信
2014/01/02 职场文书
自荐信模板大全
2015/03/27 职场文书
2015年社区妇联工作总结
2015/04/21 职场文书
心理健康教育主题班会
2015/08/13 职场文书
关于Spring配置文件加载方式变化引发的异常详解
2022/01/18 Java/Android