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 相关文章推荐
onpropertypchange
Jul 01 Javascript
formValidator3.3的ajaxValidator一些异常分析
Jul 12 Javascript
利用JS解决ie6不支持max-width,max-height问题的方法
Jan 02 Javascript
jQuery实现自动滚动到页面顶端的方法
May 22 Javascript
不依赖Flash和任何JS库实现文本复制与剪切附源码下载
Oct 09 Javascript
jQuery实现鼠标选中文字后弹出提示窗口效果【附demo源码】
Sep 05 Javascript
详解JavaScript中this的指向问题
Jan 20 Javascript
Django1.7+JQuery+Ajax验证用户注册集成小例子
Apr 08 jQuery
vue 每次渲染完页面后div的滚动条保持在最底部的方法
Mar 17 Javascript
Vue.js 表单控件操作小结
Mar 29 Javascript
Vue常用指令详解分析
Aug 19 Javascript
vue左侧菜单,树形图递归实现代码
Aug 24 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 根据IP地址控制访问的代码
2010/04/22 PHP
PHP 第二节 数据类型之数组
2012/04/28 PHP
PHP使用Mysql事务实例解析
2014/09/08 PHP
使用JavaScript创建新样式表和新样式规则
2016/06/14 PHP
一个刚完成的layout(拖动流畅,不受iframe影响)
2007/08/17 Javascript
Three.js源码阅读笔记(光照部分)
2012/12/27 Javascript
JavaScript 处理Iframe自适应高度(同或不同域名下)
2013/03/29 Javascript
JavaScript中的数值范围介绍
2014/12/29 Javascript
javascript中传统事件与现代事件
2015/06/23 Javascript
js实现(全选)多选按钮的方法【附实例】
2016/03/30 Javascript
JavaScript中的编码和解码函数
2017/02/15 Javascript
JS匹配日期和时间的正则表达式示例
2017/05/12 Javascript
Redux 和 Mobx的选择问题:让你不再困惑!
2017/09/18 Javascript
JS基于封装函数实现的表格分页完整示例
2018/06/26 Javascript
Vue 使用beforeEach实现登录状态检查功能
2019/10/31 Javascript
Vue使用vue-draggable 插件在不同列表之间拖拽功能
2020/03/12 Javascript
es6数组的flat(),flatMap()函数用法实例分析
2020/04/18 Javascript
vue实现简单跑马灯效果
2020/05/25 Javascript
使用Python的内建模块collections的教程
2015/04/28 Python
编写Python的web框架中的Model的教程
2015/04/29 Python
全面了解python中的类,对象,方法,属性
2016/09/11 Python
python opencv实现图片旋转矩形分割
2018/07/26 Python
关于python3中setup.py小概念解析
2019/08/22 Python
使用celery和Django处理异步任务的流程分析
2020/02/19 Python
html5中JavaScript removeChild 删除所有节点
2014/05/16 HTML / CSS
AmazeUI 模态窗口的实现代码
2020/08/18 HTML / CSS
WoolOvers爱尔兰:羊绒、羊毛和棉针织品
2017/01/04 全球购物
介绍一下结构化程序设计方法和面向对象程序设计方法的区别
2012/06/27 面试题
浅谈react路由传参的几种方式
2021/03/23 Javascript
冰淇淋店的创业计划书
2014/02/07 职场文书
班主任评语大全
2014/04/26 职场文书
竞选劳动委员演讲稿
2014/04/28 职场文书
财务部会计岗位职责
2015/02/03 职场文书
MySQL 8.0 Online DDL快速加列的相关总结
2021/06/02 MySQL
浅谈Web Storage API的使用
2021/06/23 Javascript
USB TYPE-C 或将成为所有智能手机充电标准
2022/04/21 数码科技