javascript针对DOM的应用分析(四)


Posted in Javascript onApril 15, 2012

下面我就写几个给大家看看
一,点击传参方法

<script> 
function tab(dom){ 
var list = document.getElementById("list").getElementsByTagName("li"); 
var con = document.getElementById("con").getElementsByTagName("div"); 
for(var i=0;i<list.length;i++){ 
if(list==dom){ 
list.className = "on"; 
con.style.display = "block"; 
} 
else{ 
list.className=""; 
con.style.display="none"; 
} 
} 
} 
</script> 
<div id="list"> 
<ul> 
<li class="on">1</li> 
<li>2</li> 
<li>3</li> 
<li>4</li> 
</ul> 
</div> 
<div id="con"> 
<div style="display:block;">111111</div> 
<div style="display:none;">222222</div> 
<div style="display:none;">333333</div> 
<div style="display:none;">444444</div> 
</div>

我解释一下
var list = document.getElementById("list").getElementsByTagName("li");
var con = document.getElementById("con").getElementsByTagName("div");
获取dom元素,这个不用说了吧。写什么效果第一件事都是获取元素
for(var i=0;i<list.length;i++){ 
if(list==dom){ 
list.className = "on"; 
con.style.display = "block"; 
} 
else{ 
list.className=""; 
con.style.display="none"; 
}

遍历一下所有的li元素,找到和传进来的dom一样的东西,然后把他的class设置为on,并且把相对应的div给显示出来,其他的就全部把className设置为空,并且把对应的div给隐藏。
大概就是这样。但是大家肯定就都发现了这样的写法的缺点,就是每个li都要设置一个onclick时间传入它自己。这样有点违反了结构与表现相分离的道理。所以我们就换种写法
二,直接写入鼠标事件方法
<script> 
function tab(){ 
var list = document.getElementById("list").getElementsByTagName("li"); 
var con = document.getElementById("con").getElementsByTagName("div"); 
for(var i = 0;i<list.length;i++) 
{ 
list.onclick=function(){ 
for(var i=0;i<list.length;i++){ 
if(list==this){ 
list.className = "on"; 
con.style.display = "block"; 
} 
else{ 
list.className=""; 
con.style.display="none"; 
} 
} 
} 
} 
} 
window.onload=function(){tab();} 
</script> 
<div id="list"> 
<ul> 
<li class="on">1</li> 
<li>2</li> 
<li>3</li> 
<li>4</li> 
</ul> 
</div> 
<div id="con"> 
<div style="display:block;">111111</div> 
<div style="display:none;">222222</div> 
<div style="display:none;">333333</div> 
<div style="display:none;">444444</div> 
</div>

只是简单的改动一下就可以了,因为在JS中有这些方法可以用比如onclick,onmouseover等等,但是用的时候我要先把所有的要用这个事件的元素都遍历一下,如果那个被点击就会传入一个this,我们只需要像第一种方法一样判断一下list是不是和这个this相同,然后下面的操作和第一种方法一样
(这样两种方法都是比较简单的写法,在JS里还有一些比较高级复杂的写法,但是用到的思想和这两种写法大多一样。)
好了就到这里,建议大家可以用这种方法写一个图片切换效果,我想应该很简单吧

下章继续说效果

Javascript 相关文章推荐
ajax 同步请求和异步请求的差异分析
Jul 04 Javascript
js 实现在离开页面时提醒未保存的信息(减少用户重复操作)
Jan 16 Javascript
javascript中alert()与console.log()的区别
Aug 26 Javascript
JavaScript中eval函数的问题
Jan 31 Javascript
JS基于MSClass和setInterval实现ajax定时采集信息并滚动显示的方法
Apr 18 Javascript
JS中使用 after 伪类清除浮动实例
Mar 01 Javascript
为你的微信小程序体积瘦身详解
May 20 Javascript
node.js express中app.param的用法详解
Jul 16 Javascript
angular 服务随记小结
May 06 Javascript
vue-cli随机生成port源码的方法
Sep 02 Javascript
jquery传参及获取方式(两种方式)
Feb 13 jQuery
jQuery实现简单日历效果
Jul 05 jQuery
javascript针对DOM的应用分析(三)
Apr 15 #Javascript
javascript针对DOM的应用分析(二)
Apr 15 #Javascript
javascript针对DOM的应用实例(一)
Apr 15 #Javascript
JavaScript中的null和undefined解析
Apr 14 #Javascript
dtree 网页树状菜单及传递对象集合到js内,动态生成节点
Apr 14 #Javascript
jquerymobile checkbox及时刷新才能获取其准确值
Apr 14 #Javascript
深入理解JavaScript系列(16) 闭包(Closures)
Apr 12 #Javascript
You might like
让你的网站首页自动选择语言转跳
2006/12/06 PHP
php实现给图片加灰色半透明效果的方法
2014/10/20 PHP
PHP内核学习教程之php opcode内核实现
2016/01/27 PHP
PHP在线打包下载功能示例
2016/10/15 PHP
PHP实现找出有序数组中绝对值最小的数算法分析
2017/08/07 PHP
javascript 利用Image对象实现的埋点(某处的点击数)统计
2012/12/28 Javascript
js中继承的几种用法总结(apply,call,prototype)
2013/12/26 Javascript
javascript作用域和闭包使用详解
2014/04/25 Javascript
改变状态栏文字的js代码
2014/06/13 Javascript
使用jQuery仿苹果官网焦点图特效
2014/12/23 Javascript
js实现DOM走马灯特效的方法
2015/01/21 Javascript
Angular中的Promise对象($q介绍)
2015/03/03 Javascript
node.js插件nodeclipse安装图文教程
2020/10/19 Javascript
手机浏览器 后退按钮强制刷新页面方法总结
2016/10/09 Javascript
vue-router:嵌套路由的使用方法
2017/02/21 Javascript
详解wow.js中各种特效对应的类名
2017/09/13 Javascript
详解nodejs中express搭建权限管理系统
2017/09/15 NodeJs
微信小程序实现手指触摸画板
2018/07/09 Javascript
详解node.js的http模块实例演示
2018/07/12 Javascript
微信小程序中this.data与this.setData的区别详解
2018/09/17 Javascript
node版本管理工具n包使用教程详解
2018/11/09 Javascript
Python脚本实现下载合并SAE日志
2015/02/10 Python
python模拟鼠标拖动操作的方法
2015/03/11 Python
python去掉行尾的换行符方法
2017/01/04 Python
详解python爬虫系列之初识爬虫
2019/04/06 Python
python 通过视频url获取视频的宽高方式
2019/12/10 Python
Python通过队列来实现进程间通信的示例
2020/10/14 Python
应用化学专业职业生涯规划书
2014/01/22 职场文书
测量工程专业求职信
2014/02/24 职场文书
成立公司计划书
2014/05/07 职场文书
党员民主生活会对照检查材料思想汇报
2014/09/28 职场文书
2014公司年终工作总结
2014/12/19 职场文书
实名检举信范文
2015/03/02 职场文书
2016年八一建军节活动总结
2016/04/05 职场文书
导游词之河北白洋淀
2020/01/15 职场文书
详解如何修改nginx的默认端口
2021/03/31 Servers