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 相关文章推荐
让JavaScript 轻松支持函数重载 (Part 1 - 设计)
Aug 04 Javascript
火狐4、谷歌12不支持Jquery Validator的解决方法分享
Jun 20 Javascript
加载 Javascript 最佳实践
Oct 30 Javascript
常用一些Javascript判断函数
Aug 14 Javascript
浅析js中2个等号与3个等号的区别
Aug 06 Javascript
javascript alert乱码的解决方法
Nov 05 Javascript
ExtJS4中的requires使用方法示例介绍
Dec 03 Javascript
jquery中trigger()无法触发hover事件的解决方法
May 07 Javascript
javascript 中事件冒泡和事件捕获机制的详解
Sep 01 Javascript
了解ESlint和其相关操作小结
May 21 Javascript
vue自动路由-单页面项目(非build时构建)
Apr 30 Javascript
详解Howler.js Web音频播放终极解决方案
Aug 23 Javascript
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
用PHP实现小型站点广告管理(修正版)
2006/10/09 PHP
php5 图片验证码实现代码
2009/12/11 PHP
php session的锁和并发
2016/01/22 PHP
ThinkPHP中调用PHPExcel的实现代码
2017/04/08 PHP
thinkPHP3.2使用RBAC实现权限管理的实现
2019/08/27 PHP
Aster vs KG BO3 第二场2.18
2021/03/10 DOTA
JavaScript获取GridView中用户点击控件的行号,列号
2009/04/14 Javascript
javascript中的107个基础知识收集整理 推荐
2010/03/29 Javascript
基于jquery的一个简单的脚本验证插件
2010/04/05 Javascript
基于jquery的web页面日期格式化插件
2011/11/15 Javascript
jquery实现按Enter键触发事件示例
2013/09/10 Javascript
JavaScript实现在页面间传值的方法
2015/04/07 Javascript
JavaScript中对DOM节点的访问、创建、修改、删除
2015/11/16 Javascript
JS中页面与页面之间超链接跳转中文乱码问题的解决办法
2016/12/15 Javascript
Javascript中引用类型传递的知识点小结
2017/03/06 Javascript
JavaScript实现短信倒计时60s
2017/10/09 Javascript
js canvas实现5张图片合成一张图片
2019/07/15 Javascript
Vue+Element-UI实现上传图片并压缩
2019/11/26 Javascript
python文件读写操作与linux shell变量命令交互执行的方法
2015/01/14 Python
Python实现连接postgresql数据库的方法分析
2017/12/27 Python
Python设计模式之代理模式简单示例
2018/01/09 Python
Python cookbook(数据结构与算法)同时对数据做转换和换算处理操作示例
2018/03/23 Python
详解flask入门模板引擎
2018/07/18 Python
python实现对输入的密文加密
2019/03/20 Python
详解Python 切片语法
2019/06/10 Python
Python使用Chrome插件实现爬虫过程图解
2020/06/09 Python
HTML5在canvas中绘制复杂形状附效果截图
2014/06/23 HTML / CSS
社区矫正工作方案
2014/06/04 职场文书
社区安全生产月活动总结
2014/07/05 职场文书
人身损害赔偿协议书范本
2014/09/27 职场文书
公安机关党的群众路线教育实践活动剖析材料
2014/10/10 职场文书
通知格式
2015/04/27 职场文书
企业承诺书格式范文
2015/04/28 职场文书
Pytorch 如何实现LSTM时间序列预测
2021/05/17 Python
Win11 S Mode版本泄露 正式上线后叫做Windows 11 SE
2021/11/21 数码科技
JavaScript实现队列结构过程
2021/12/06 Javascript