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 相关文章推荐
如何在Mozilla Gecko 用Javascript加载XSL
Jan 09 Javascript
javascript各浏览器中option元素的表现差异
Apr 07 Javascript
js创建数据共享接口——简化框架之间相互传值
Oct 23 Javascript
用表格输出1-1000之间的数字实现代码(附特效)
Apr 21 Javascript
让javascript加载速度倍增的方法(解决JS加载速度慢的问题)
Dec 12 Javascript
js判断手机号运营商的方法
Oct 23 Javascript
Vue.js 60分钟快速入门教程
Mar 28 Javascript
vue.js组件vue-waterfall-easy实现瀑布流效果
Aug 22 Javascript
vue 2.1.3 实时显示当前时间,每秒更新的方法
Sep 16 Javascript
vue实现表格过滤功能
Sep 27 Javascript
Vue学习之常用指令实例详解
Jan 06 Javascript
解决vue项目router切换太慢问题
Jul 19 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自定义函数之递归删除文件及目录
2010/08/08 PHP
PHP中使用cURL实现Get和Post请求的方法
2013/03/13 PHP
关于php内存不够用的快速解决方法
2013/10/26 PHP
php+mysqli批量查询多张表数据的方法
2015/01/29 PHP
php实现比较两个文件夹异同的方法
2015/06/18 PHP
PHP中函数gzuncompress无法使用的解决方法
2017/03/02 PHP
php ajax数据传输和响应方法
2018/08/21 PHP
了解jQuery技巧来提高你的代码(个人觉得那个jquery的手册很不错)
2012/02/10 Javascript
来自国外的30个基于jquery的Web下拉菜单
2012/06/22 Javascript
js关闭当前页面(窗口)的几种方式总结
2013/03/05 Javascript
jquery插件lazyload.js延迟加载图片的使用方法
2014/02/19 Javascript
浅谈Javascript中深复制
2014/12/01 Javascript
jquery $(document).ready()和window.onload的区别浅析
2015/02/04 Javascript
再谈Javascript中的异步以及如何异步
2016/08/19 Javascript
setTimeout函数的神奇使用
2017/02/26 Javascript
基于JavaScript实现验证码功能
2017/04/01 Javascript
vue.js中mint-ui框架的使用方法
2017/05/12 Javascript
Vue v2.5 调整和更新不完全问题
2017/10/24 Javascript
vue实现歌手列表字母排序下拉滚动条侧栏排序实时更新
2019/05/14 Javascript
JS去除字符串最后的逗号实例分析【四种方法】
2019/06/20 Javascript
vue中 数字相加为字串转化为数值的例子
2019/11/07 Javascript
Vue中登录验证成功后保存token,并每次请求携带并验证token操作
2020/09/08 Javascript
JavaScript setTimeout()基本用法有哪些
2020/11/04 Javascript
[56:00]2018DOTA2亚洲邀请赛 4.6 淘汰赛 VP vs TNC 第二场
2018/04/10 DOTA
Python实现批量更换指定目录下文件扩展名的方法
2016/09/19 Python
Python基于list的append和pop方法实现堆栈与队列功能示例
2017/07/24 Python
PyCharm在win10的64位系统安装实例
2017/11/26 Python
浅谈python处理json和redis hash的坑
2020/07/16 Python
纯css3实现思维导图样式示例
2018/11/01 HTML / CSS
财政局长自荐信范文
2013/12/22 职场文书
工程业务员岗位职责
2013/12/31 职场文书
民生工程实施方案
2014/03/22 职场文书
竞选村长演讲稿
2014/04/28 职场文书
生物技术专业求职信
2014/06/10 职场文书
特岗教师个人总结
2015/02/10 职场文书
大学校园招聘会感想
2015/08/10 职场文书