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 相关文章推荐
js小技巧--自动隐藏红叉叉
Aug 13 Javascript
CLASS_CONFUSION JS混淆 全源码
Dec 12 Javascript
javascript iframe编程相关代码
Dec 28 Javascript
JavaScript 学习笔记(十一)
Jan 19 Javascript
jQuery与其它库冲突的解决方法
Jun 25 Javascript
jQuery UI Autocomplete 体验分享
Feb 14 Javascript
Javascript浅谈之this
Dec 17 Javascript
Redux 和 Mobx的选择问题:让你不再困惑!
Sep 18 Javascript
input type=file 选择图片并且实现预览效果的实例
Oct 26 Javascript
AngularJS模态框模板ngDialog的使用详解
May 11 Javascript
对vue中的事件穿透与禁止穿透实例详解
Oct 28 Javascript
如何实现js拖拽效果及原理解析
May 08 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 常用类整理
2009/12/23 PHP
PHP的MVC模式实现原理分析(一相简单的MVC框架范例)
2014/04/29 PHP
PHP使用标准库spl实现的观察者模式示例
2018/08/04 PHP
PHP的new static和new self的区别与使用
2019/11/27 PHP
PHP实现简单的计算器
2020/08/28 PHP
一个加密JavaScript的开源工具PACKER2.0.2
2006/11/04 Javascript
javascript 类定义的4种方法
2009/09/12 Javascript
JQuery为textarea添加maxlength属性的代码
2010/04/07 Javascript
轻轻松松学JS调试(不下载任何工具)
2010/04/14 Javascript
基于jQuery的简单的列表导航菜单
2011/03/02 Javascript
innerHTML属性,outerHTML属性,textContent属性,innerText属性区别详解
2015/03/13 Javascript
javascript连续赋值问题
2015/07/08 Javascript
JS前端开发判断是否是手机端并跳转操作(小结)
2017/02/05 Javascript
Angular4编程之表单响应功能示例
2017/12/13 Javascript
javascript中的隐式调用
2018/02/10 Javascript
vue2.0 实现富文本编辑器功能
2019/05/26 Javascript
解决layui checkbox 提交多个值的问题
2019/09/02 Javascript
layui复选框的全选与取消实现方法
2019/09/02 Javascript
JS实现鼠标按下拖拽效果
2020/07/23 Javascript
python中去空格函数的用法
2014/08/21 Python
scrapy自定义pipeline类实现将采集数据保存到mongodb的方法
2015/04/16 Python
Python编程入门的一些基本知识
2015/05/13 Python
Python对列表排序的方法实例分析
2015/05/16 Python
使用Python对SQLite数据库操作
2017/04/06 Python
python3+PyQt5重新实现QT事件处理程序
2018/04/19 Python
python去除扩展名的实例讲解
2018/04/23 Python
基于python的图片修复程序(实现水印去除)
2018/06/04 Python
Python格式化字符串f-string概览(小结)
2019/06/18 Python
python写入文件自动换行问题的方法
2019/07/05 Python
利用python批量爬取百度任意类别的图片的实现方法
2020/10/07 Python
Ray-Ban雷朋奥地利官网:全球领先的太阳眼镜品牌
2020/10/12 全球购物
Unix/Linux开发面试题
2016/08/16 面试题
酒店总经理职务说明书
2014/02/26 职场文书
实习班主任自我评价
2015/03/11 职场文书
高中物理教学反思
2016/02/19 职场文书
MySQL CHAR和VARCHAR该如何选择
2021/05/31 MySQL