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 相关文章推荐
用JS实现一个页面多个css样式实现
May 29 Javascript
JavaScript 动态创建VML的方法
Oct 14 Javascript
JQuery 操作select标签实现代码
May 14 Javascript
Javascript连接Access数据库完整实例
Aug 03 Javascript
javascript实现鼠标放上后下边对应内容变换的效果
Aug 06 Javascript
JS限制条件补全问题实例分析
Dec 16 Javascript
Javascript面试经典套路reduce函数查重
Mar 23 Javascript
详解vue-cli中配置sass
Jun 21 Javascript
Node做中转服务器转发接口
Oct 18 Javascript
Vue实现6位数密码效果
Aug 18 Javascript
Layui动态生成select下拉选择框不显示的解决方法
Sep 24 Javascript
js实现div色块碰撞
Jan 16 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
解决ThinkPHP下使用上传插件Uploadify浏览器firefox报302错误的方法
2015/12/18 PHP
php微信公众号开发模式详解
2016/11/28 PHP
PHP基于双向链表与排序操作实现的会员排名功能示例
2017/12/26 PHP
通过jquery的$.getJSON做一个跨域ajax请求试验
2011/05/03 Javascript
一个基于jQuery的树型插件(OrangeTree)使用介绍
2012/05/03 Javascript
jQuery点击后一组图片左右滑动的实现代码
2012/08/16 Javascript
Extjs4 GridPanel的主要配置参数详细介绍
2013/04/18 Javascript
JS+CSS实现鼠标滑过时动态翻滚的导航条效果
2015/09/24 Javascript
jQuery自定义元素右键点击事件(实现案例)
2017/04/28 jQuery
Vue2.0 从零开始_环境搭建操作步骤
2017/06/14 Javascript
详解angular脏检查原理及伪代码实现
2018/06/08 Javascript
Vue中保存数据到磁盘文件的方法
2018/09/06 Javascript
vue配置font-awesome5的方法步骤
2019/01/27 Javascript
移动端底部导航固定配合vue-router实现组件切换功能
2019/06/13 Javascript
JavaScript页面加载事件实例讲解
2019/09/01 Javascript
vue中提示$index is not defined错误的解决方式
2020/09/02 Javascript
python统计文本文件内单词数量的方法
2015/05/30 Python
Python多层嵌套list的递归处理方法(推荐)
2016/06/08 Python
Django中间件工作流程及写法实例代码
2018/02/06 Python
python docx 中文字体设置的操作方法
2018/05/08 Python
Python简单定义与使用二叉树示例
2018/05/11 Python
攻击者是如何将PHP Phar包伪装成图像以绕过文件类型检测的(推荐)
2018/10/11 Python
Python3爬虫学习之MySQL数据库存储爬取的信息详解
2018/12/12 Python
Django实现一对多表模型的跨表查询方法
2018/12/18 Python
Python实现简易过滤删除数字的方法小结
2019/01/09 Python
python3.6根据m3u8下载mp4视频
2019/06/17 Python
PyCharm-错误-找不到指定文件python.exe的解决方法
2019/07/01 Python
python图的深度优先和广度优先算法实例分析
2019/10/26 Python
详解Python修复遥感影像条带的两种方式
2020/02/23 Python
python opencv实现直线检测并测出倾斜角度(附源码+注释)
2020/12/31 Python
10个最常见的HTML5面试题 附答案
2016/06/06 HTML / CSS
Allsole美国/加拿大:英国一家专门出售品牌鞋子的网站
2018/10/21 全球购物
企业宣传策划方案
2014/05/29 职场文书
文秘班元旦晚会活动策划方案
2014/08/28 职场文书
导游词之无锡梅园
2019/11/28 职场文书
使用CSS实现百叶窗效果示例代码
2023/05/07 HTML / CSS