javascript针对DOM的应用分析(三)


Posted in Javascript onApril 15, 2012

如果这个DOM元素没有样式也就谈不上操作了。2.我们也可以直接用JS动态的向html里写入DOM元素。
今天这章我们就讲这两个应用
(一)对html里现有的DOM元素进行操作。
我上面说了,对现有的DOM元素进行操作,无非就是对样式的操作。所以我们首先就要能获取这个DOM元素的样式。在讲获取DOM元素的样式之前。先要说下DOM元素的样式链接方式。有三种。

一是直接在html文档里写入样式例如
<div style="width:300px;height:200px;background:#000;"></div>。

二是在html文档头部用样式标签插入例如
<style>
#dom{width:300px;height:200px;background:#000;}
</style>

三就是我们常用的链入方式例如
<link rel="stylesheet" type="text/css" href="css.css" />

这三种的用JS操作它样式的方法都不太相同
重点我们说第一种链入样式操作,因为是最常用的,也是最方便的。
第二种链入样式操作麻烦。
第三种链入样式操作麻烦不说,而且无法直接修改样式,想修改的话还必须用第一种的方法,也就是说只能看不能摸

第一种链入样式的操作方法
例<div id="dom" style="width:300px;height:200px;background:#000;margin-top:10px;"></div>
获取它的高度属性,首先当然是获取DOM元素了,用前几章的方法
var a = document.getElementById("dom");
再来获取它的高度属性,很简单
var h = a.style.height;
以此类推,获取宽度,获取背景色
var w = a.style.width;
var bg = a.style.background;
注意那个外边距属性是margin-top;
要获取这个不能直接写
var mt = a.style.margin-top;
要用JQ中提到的骆驼写法
var mt = a.style.marginTop;

获取它当然没什么用处,我们要能修改,修改起来也很方便。例如我们要把它的高度变为100,很简单,就一句
a.style.height = "100px";
其他的以此类推,我不再多说;

第二种链入样式的操作方法
<style>
#dom{width:300px;height:200px;background:#000;margin-top:10px;}
</style>
这种操作需要区分浏览器。因为IE和FF对这个获取的代码不同,比如获取高度的方法是
var domcss = document.styleSheets[0].cssRules||document.styleSheets[0].rules;
var a = domcss[0].style.height;
修改的话是这样的
domcss[0].style.height = "100px";
这个我也不想解释为什么是这样写。大家感兴趣的自己去查下;

第三种链入样式的操作方法
<link rel="stylesheet" type="text/css" href="css.css" />
这种操作也需要区分浏览器。
获取的话一般都是写个函数,函数是这样的
function CurrentStyle(element){
return element.currentStyle || document.defaultView.getComputedStyle(element, null);
}
假如我们那个css.css文件里面有height属性
获取方法是var a = CurrentStyle("dom").height;
无法用这里的方法直接修改,只能用第一种方法修改
这个我也不想解释为什么是这样写。大家感兴趣的自己去查下;

(二)用JS动态创建DOM元素。
其实这个很简单就是几个JS的方法而已,不过要像盖房子一样一步一步来,比如我要创建一个这样的DOM元素:
<div id="dom" style="width:100px;height:100px;background:#000;margin-top:10px;"></div>

第一步,要创建一个div节点。var newobj = document.createElement("div");

第二步,要给这个节加一个id属性,并且属性名是dom。newobj.setAttribute("id","dom");

第三步,要给这个节点加属性了这里有两种方,一种就是我们前面说到的修改样式是这样的newobj.style.width = "100px";还有一种就是第二步用到的那个方法newobj.setAttribute("width","100px"),其他属性以此类推

第四步,就是要把这个节点给放到html文档里,方法是这样的document.body.appendChild(newobj)这句的意思是这样的。document.body就是获取了body元素
,appendChild(newobj)就是向这个body元素里添加一个孩子元素就是我们创建的那个节点。

如果你想移除这个节点是这样document.body.removeChild(newobj);
(这个可以换的,换成你想要向那个里面添加子元素的的那个元素,比如我想向id为con的这个元素添加节点我们就这样写document.getElementById("con").appendChild(newobj))

这就算是完成了。JS里有很多和appendChild差不多的方法。用法和这个一样大家有兴趣的可以去百度一下。所以我这里也就不说了,都不太常用。

好这章就到这里了,下章开始就用开始教大家写一些效果了。

Javascript 相关文章推荐
Jquery Ajax学习实例 向页面发出请求,返回XML格式数据
Mar 14 Javascript
JS实现一键回顶功能示例代码
Oct 28 Javascript
JQuery选择器、过滤器大整理
May 26 Javascript
浅谈javascript中的constructor
Jun 08 Javascript
JS中的==运算: [''] == false —&gt;true
Jul 24 Javascript
javascript简单实现跟随滚动条漂浮的返回顶部按钮效果
Aug 19 Javascript
Javascript将字符串日期格式化为yyyy-mm-dd的方法
Oct 27 Javascript
js模拟微博发布消息
Feb 23 Javascript
从源码里了解vue中的nextTick的使用
Nov 22 Javascript
浅谈Vue 性能优化之深挖数组
Dec 11 Javascript
微信小程序实现上传多个文件 超过10个
Mar 30 Javascript
vue-video-player视频播放器使用配置详解
Oct 23 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
深入理解JavaScript系列(15) 函数(Functions)
Apr 12 #Javascript
You might like
PHPAnalysis中文分词类详解
2014/06/13 PHP
php使用类继承解决代码重复的问题
2015/02/11 PHP
php+jQuery+Ajax简单实现页面异步刷新
2016/08/08 PHP
Zend Framework入门教程之Zend_Db数据库操作详解
2016/12/08 PHP
使用JavaScript库还是自己写代码?
2010/01/28 Javascript
jQuery1.4.2与老版本json格式兼容的解决方法
2011/02/12 Javascript
node.js中使用socket.io的方法
2014/12/15 Javascript
Nodejs为什么选择javascript为载体语言
2015/01/13 NodeJs
JavaScript实现带缓冲效果的随屏滚动漂浮广告代码
2015/11/06 Javascript
JS实现消息来时让网页标题闪动效果的方法
2016/04/20 Javascript
老生常谈JavaScript 正则表达式语法
2016/08/20 Javascript
JavaScript制作简单分页插件
2016/09/11 Javascript
Angular 表单控件示例代码
2017/06/26 Javascript
利用require.js与angular搭建spa应用的方法实例
2017/07/19 Javascript
基于Vue框架vux组件库实现上拉刷新功能
2017/11/28 Javascript
Vue+mui实现图片的本地缓存示例代码
2018/05/24 Javascript
基于Vue SEO的四种方案(小结)
2019/07/01 Javascript
Javascript原生ajax请求代码实例
2020/02/20 Javascript
详谈Object.defineProperty 及实现数据双向绑定
2020/07/18 Javascript
用Python编写一个基于终端的实现翻译的脚本
2015/04/24 Python
Python实现的微信好友数据分析功能示例
2018/06/21 Python
python TKinter获取文本框内容的方法
2018/10/11 Python
Django中提供的6种缓存方式详解
2019/08/05 Python
python使用sklearn实现决策树的方法示例
2019/09/12 Python
python opencv 图像边框(填充)添加及图像混合的实现方法(末尾实现类似幻灯片渐变的效果)
2020/03/09 Python
opencv+python实现鼠标点击图像,输出该点的RGB和HSV值
2020/06/02 Python
python3 简单实现组合设计模式
2020/07/02 Python
Python3 + Appium + 安卓模拟器实现APP自动化测试并生成测试报告
2021/01/27 Python
Python 图片处理库exifread详解
2021/02/25 Python
总裁办公室主任职责
2014/01/02 职场文书
两年的个人工作自我评价
2014/01/10 职场文书
最新创业融资计划书
2014/01/19 职场文书
班级德育工作实施方案
2014/02/21 职场文书
普通党员整改措施
2014/10/24 职场文书
家长通知书家长意见
2015/06/03 职场文书
当你找不到方向的时候,不妨读读刘备的一生
2019/08/05 职场文书