javascript针对DOM的应用实例(一)


Posted in Javascript onApril 15, 2012

我相信可能大部分人来这里学javascript主要还是想用这个结合页面中的DOM元素做一些实际有用的交互效果。所以我这里只教大家最实际,最有用的javascript应用。但是前提大家最好有一些javascript或者jquery的编程的基础。好废话不多说了。
今天第一篇,就教大家如何用javascript获取页面中的dom元素。这个很重要。我会对照JQuery来讲。
如果页面中的元素是ID属性
<div id="dom"></div>

JQ的方法:$("#dom"),
原生js的方法:var a = document.getElementById("dom");这个a就等价于$("#dom");

如果我想获取父级元素下的一个元素

<div id="dom"> 
<span></span> 
</div>

JQ的方法:$("#dom span"),
原生js的方法:var b = document.getElementById("dom").getElementsByTagName("span")[0];这个b就等价于$("#dom span")
其实还有一种简单方法var b = document.getElementById("dom").childNodes[0] 但是在FF下会出问题,这个我们以后讨论

获取页面中的一组元素

<div id = "dom"> 
<ul> 
<li></li> 
<li></li> 
<li></li> 
<ul> 
</div>

JQ的方法:$("#dom ul li")或者$("#dom li")或者$("#dom > li"),
原生JS方法:var c = document.getElementById("dom").getElementsByTagName("li");但是这个c不等同于上面,因为不能像上面JQ那样直接使用。需要用for循环才能一起使用。如果单个使用比如说我只用第一个li,只需要var c = document.getElementById("dom").getElementsByTagName("li")[0],用第二个就是var c = document.getElementById("dom").getElementsByTagName("li")[1],以此类推。因为DOM元素在JS中是以数组形式存放的。

上面的都还算好理解。现在我要讲的这个是大家都常用的。但是在原生JS里获取也是最麻烦的一个属性就是class属性,
<div class = "dom'>
</div>

JQ的方法:很简单$(".dom");
原生JS方法:这就有些麻烦了,需要写一个函数。因为原生JS没有提供直接获取class的方法。所以我们需要这样。我先把函数写出来

function $class(domclass){ 
var odiv = document.body.getElementByTagName("*"); 
var a; 
for(var i = 0;i<odiv.length;i++){ 
if(odiv.className ==domclass){ 
a = odiv 
} 
return a; 
} 
}

用这个函数来获取就很简单了只需要var d = $class("dom");

我就说说这个函数的意思吧,
var odiv = document.body.getElementByTagName("*");
这句意思是获取页面中所有的DOM元素

for(var i = 0;i<odiv.length;i++){ 
if(odiv.className ==domclass){ 
a = odiv 
}

这个是遍历页面中所有元素然后拿他们的class进行比对。如果和我们传进来的domclass这个参数一样就把这个元素拿给a;
return a;把a返回出来

所以用var d = $class("dom");就相当于var d = a;

(顺便说下className是这JS的一个属性就是得到DOM元素的命名的class)

好了今天就发这么多。我想我写的比较笼统。大家肯定有很多不明白的地方,有不明白的就直接问。我会一一解释的。大家想学什么交互效果也可以告诉我,我会尽量满足大家

Javascript 相关文章推荐
JavaScript兼容性总结之获取非行间样式案例
Aug 07 Javascript
微信开发 微信授权详解
Oct 21 Javascript
Bootstrap提示框效果的实例代码
Jul 12 Javascript
js禁止表单重复提交
Aug 29 Javascript
jQuery进阶实践之利用最优雅的方式如何写ajax请求
Dec 20 jQuery
微信小程序自定义tab实现多层tab嵌套功能
Jun 15 Javascript
使用JavaScript中的lodash编写双色球效果
Jun 24 Javascript
Vuex 单状态库与多模块状态库详解
Dec 11 Javascript
在vue中created、mounted等方法使用小结
Jul 21 Javascript
在vue-cli3.0 中使用预处理器 (Sass/Less/Stylus) 配置全局变量操作
Aug 10 Javascript
SpringBoot+Vue开发之Login校验规则、实现登录和重置事件
Oct 19 Javascript
动态规划之使用备忘录来改进Javascript函数
Apr 07 Javascript
JavaScript中的null和undefined解析
Apr 14 #Javascript
dtree 网页树状菜单及传递对象集合到js内,动态生成节点
Apr 14 #Javascript
jquerymobile checkbox及时刷新才能获取其准确值
Apr 14 #Javascript
深入理解JavaScript系列(16) 闭包(Closures)
Apr 12 #Javascript
深入理解JavaScript系列(15) 函数(Functions)
Apr 12 #Javascript
深入理解JavaScript系列(14) 作用域链介绍(Scope Chain)
Apr 12 #Javascript
jQuery UI Dialog 创建友好的弹出对话框实现代码
Apr 12 #Javascript
You might like
PHP 手机归属地查询 api
2010/02/08 PHP
discuz程序的PHP加密函数原理分析
2011/08/05 PHP
ThinkPHP表单自动验证实例
2014/10/13 PHP
jQuery向下滚动即时加载内容实现的瀑布流效果
2016/01/07 PHP
PHP操作Redis常用技巧总结
2018/04/24 PHP
PHP常用的类封装小结【4个工具类】
2019/06/28 PHP
tagName的使用,留一笔
2006/06/26 Javascript
js arguments.callee的应用代码
2009/05/07 Javascript
onsubmit阻止form表单提交与onclick的相关操作
2010/09/03 Javascript
juqery 学习之五 文档处理 插入
2011/02/11 Javascript
通过JS自动隐藏手机浏览器的地址栏实现原理与代码
2013/01/02 Javascript
JavaScript调用堆栈及setTimeout使用方法深入剖析
2013/02/16 Javascript
javascript实现的右下角弹窗实例
2015/04/24 Javascript
理解JavaScript的变量的入门教程
2015/07/07 Javascript
Backbone.js框架中简单的View视图编写学习笔记
2016/02/14 Javascript
jqGrid翻页时数据选中丢失问题的解决办法
2017/02/13 Javascript
Vue2.0组件间数据传递示例
2017/03/07 Javascript
微信小程序 判断手机号的实现代码
2017/04/19 Javascript
基于JavaScript实现活动倒计时效果
2017/04/20 Javascript
nodejs操作mysql实现增删改查的实例
2017/05/28 NodeJs
详解VUE单页应用骨架屏方案
2019/01/17 Javascript
基于Express框架使用POST传递Form数据
2019/08/10 Javascript
[52:14]VG vs Serenity 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
Python multiprocess pool模块报错pickling error问题解决方法分析
2019/03/20 Python
Python实现的删除重复文件或图片功能示例【去重】
2019/04/23 Python
python五子棋游戏的设计与实现
2019/06/18 Python
python连接PostgreSQL过程解析
2020/02/09 Python
Pycharm如何导入python文件及解决报错问题
2020/05/10 Python
Python数据库封装实现代码示例解析
2020/09/05 Python
Django日志及中间件模块应用案例
2020/09/10 Python
pycharm 如何取消连按两下shift出现的全局搜索
2021/01/15 Python
排序都有哪几种方法?请列举。用JAVA实现一个快速排序
2014/02/16 面试题
就业协议书范本
2014/10/08 职场文书
医学专业大学生职业生涯规划书
2014/10/25 职场文书
500字作文之周记
2019/12/13 职场文书
Netty分布式客户端接入流程初始化源码分析
2022/03/25 Java/Android