一、DOM节点的操作

1.增加:

  (1). document.creatElement('标签名');创建元素节点

  (2). document.creatTextNode('文本内容');创建文本节点

  (3). document.creatComment('注释内容');  创建注释节点

  (4). document.DocumentFragment();添加文本碎片

2.插入

  (1). dom.appendChild('domName'); 向Dom添加子节点

    document.body.append('domName');向body下添加子节点

  (2). Parent.insertBefore(a, b);/*insert a before b*/

3.删除

  (1). Parent.removeChild('子节点标签名');剪切子节点,并返回

4.替换

  (1). Parent.replaceChild(new, origin);用new 来替换orign,且orign返回

二、Element的一些属性

  1. dom.innerHTML  返回dom的内容,返回类型为字符串,可读可写本

for(var i = 0; i < 3; i++){
div.innerHTML += '<span>i</span>';
}

  2.dom.innerText(火狐不兼容)/dom.textContent(老版本IE不好用),  注意:影响操作赋值语句,会影响标签,修改覆盖

三、Element的一些方法

  1.dom.setAttribute('特证名', '修改后内容');设置特征(包括自定义的);

   div.setAttribute('id', 'demo');

  2.dom.getAttribute('特证名');获取特征值

  注意:JS改变样式,以改变class为优先选择

利用上述一、二、三的内容可以动态的向html文档添加内容

四、日期对象 Date()

  1.计算机纪元时间:1970.1.1

五、计时器

  1、setInterval(执行函数,间隔时间);每间隔设定时间,执行一次要求的函数

  

var i = 0;
window.setInterval(function(){
i++;
console.log(i);
console.log(this);// => window,++
},1000 );

  特点:(1).耗性能,执行时间有误差不准,(因为放入执行队列后不一定执行)

       (2).setInterval()存在返回值  

     (3). 函数参数部分传入字符串(函数体)也可执行

setInterval('i++;console.log(i)',1000);

  2.clearInterval(setInterval的返回值); 停止setInterval函数的执行

     var i = 0;
var timer = window.setInterval(function(){
i++;
console.log(i);
if(i == 10){
clearInterval(timer);
}
},1000 );// => 1, 2, 3, 4, 5, 6, 7, 8, 9, 10
      setInterval()返回值为该方法第几次定义的数字;

  3.setTimeout(function(){},time);//间隔time后执行该函数一次

  4.learTimeout();终止setTimeout

六、DOM基本操作

  1.查看滚动条的滚动距离

    (1)window.pageXOffset/pageYOffset
         横轴和竖轴
      IE8及IE8以下不兼容
    (2)a. document.body.scrollTop/document.body.scrollLeft
      b. document.documentElement.scrollTop/document.documentElement.scrollLeft;
      任何一个浏览器a和b两种方法必有一个不能用,无值,所以:两种方法求和即可解决这种问题
    (3)封装结局兼容和第二个问题

      function getScrollOffset() {
if(window.pageXOffset) {
return {
w: window.pageXOffset,
h: window.pageYOffset
}
}
var dis = {
w: document.body.scrollLeft + document.documentElement.scrollLeft,
h:document.body.scrollTop + document.documentElement.scrollTop;
}
}

  

  2. (1)window.innerWidth/window.innerHight,可视区域宽高,IE8及IE8以下不兼容
    (2)标准模式下:document.documentElement.clientWidth/document.documentElement.clientHeight
     (3)怪异模式下:document.body.clientWidth/document.body.clientHeight
      (怪异模式下,老版本语法规则兼容,方法:将上方<!DOCTYPE html>去掉)
       document.compatMode 在控制台查看是否为怪异模式,返回'BackCompat',则为怪异模式,返回'CSS1Compat',则为非怪异模式
    (4)可视区封装域宽高,解决兼容和不同模式下问题

 

      function setViewportOffset() {
if(window.innerWidth){
return {
w: window.innerWidth,
h: window.innerHeight
}
}
if(document.compatMode == 'BackCompat'){
return{
w: document.body.clientWidth,
h: document.body.clientHeight
}
}else {
return {
w: document.documentElement.clientwidth,
h: ocument.documentElement.clientHeight
}
}
}

  

  3.查看元素尺寸
    (1)elementNode.getBoundingClientRect();
      返回的left和top,为左上角坐标,right和bottom为右下角坐标,相对浏览器;
      height和width在老版本并未实现
      返回结果为一个对象且非实时
    (2)封装,解决老版本不兼容问题

    Element.prototype.getElementOffset = function(){
var objData = this.getBoundingClientRect();
if(objData.width) {
return {
w: objData.width,
h: objData.height
}
}else{
return {
w: objData.right - objData.left,
h: objData.top - objData.bottom
}
}
}

    

    (3)elementNode.offsetWidth/offsetHeight/offsetLeft/offsetTop/,查看该元素宽高
      dom.offsetLeft/offsetTop 对于无定位父级的元素,返回相对整个文档的坐标,对于有定位父级的元素,返回相对于最近定位父级元素的坐标
      offsetParent 返回最近的定位的父级,body调用返回null
   (4)封装获得返回元素右下角相对于浏览器原点的坐标

 

    Element.prototype.getScrollOffset = function () {
if(!this.offsetParent){
return{
w: this.offsetWidth,
h: this.offsetHeigth
}
}
var width = this.offsetWidth,
height = this.offsetHeight,
tar = this;
while(tar.offsetParent != null){
tar = tar.offsetParent;
width += this.offsetWidth;
height += this.offsetHeight;
}
return {
w: width + tar.offsetWidth,
h: height + tar.offsetHeight
}
}

  

  4.让滚动条滚动
    1.scrollTo(x,y);滚动到x,y的距离,每次都相对于浏览器原点
    2.scroll(x,y);和 1方法同
    3.scrollBy();滚动到x,y的位置,每次都相对于当前滚动条的位置,之前数据累加

 

JS之DOM(二)的更多相关文章

  1. 继续JS之DOM对象二

    前面在JS之DOM中我们知道了属性操作,下面我们来了解一下节点操作.很重要!! 一.节点操作 创建节点:var ele_a = document.createElement('a');添加节点:ele ...

  2. JS之DOM对象二

    前面在JS之DOM中我们知道了属性操作,下面我们来了解一下节点操作.很重要!! 一.节点操作 创建节点:var ele_a = document.createElement('a');添加节点:ele ...

  3. 前端之JavaScript:JS之DOM对象二

    继续JS之DOM对象二 前面在JS之DOM中我们知道了属性操作,下面我们来了解一下节点操作.很重要!! 一.节点操作 创建节点:var ele_a = document.createElement(' ...

  4. 【JavaScript实用技巧(二)】Js操作DOM(由问题引发的文章改版,新人大佬都可)

    [JavaScript实用技巧(二)]Js操作DOM(由问题引发的文章改版,新人大佬都可!) 博客说明 文章所涉及的资料来自互联网整理和个人总结,意在于个人学习和经验汇总,如有什么地方侵权,请联系本人 ...

  5. python学习笔记十三 JS,Dom(进阶篇)

    JS介绍 JavaScript 是属于网络的脚本语言!JavaScript 被数百万计的网页用来改进设计.验证表单.检测浏览器.创建cookies,以及更多的应用:JavaScript 是因特网上最流 ...

  6. 【高德地图API】从零开始学高德JS API(二)地图控件与插件——测距、圆形编辑器、鼠标工具、地图类型切换、鹰眼鱼骨

    原文:[高德地图API]从零开始学高德JS API(二)地图控件与插件——测距.圆形编辑器.鼠标工具.地图类型切换.鹰眼鱼骨 摘要:无论是控件还是插件,都是在一级API接口的基础上,进行二次开发,封装 ...

  7. 原生js操作DOM基础-笔记

    原文参考http://mp.weixin.qq.com/s?__biz=MzU3MDA0NTMzMA==&mid=2247485490&idx=1&sn=15197b4b53e ...

  8. js的dom对象(带实例超详细全解)

    js的dom对象(带实例超详细全解) 一.总结 一句话总结: 1.DOM中的方法区分大小写么? 解答:区分 2.DOM中元素和节点的关系式什么? 解答:元素就是标签,节点中有元素节点,也是标签,节点中 ...

  9. js的dom测试及实例代码

    js的dom测试及实例代码 一.总结 一句话总结: 1.需要记得 创建 标签和创建文本节点都是document的活:document.createTextNode("Rockets的姚明&q ...

  10. js的dom操作(整理)(转)

    js的dom操作整理(整理)(转) 一.总结 一句话总结: dom操作有用原生js的dom操作,也可以用对js封装过的jquery等插件来来更加方便的进行dom操作 1.dom是什么? 对于JavaS ...

随机推荐

  1. Javascript是一个事件驱动语言

    面向原型这种说法我没在网上找到

  2. 历时八年,HTML5 标准终于完工了

    万维网联盟(W3C)2014年10月29日泪流满面地宣布,经过几乎8年的艰辛努力,HTML5标准规范终于最终制定完成了,并已公开发布. 在此之前的几年时间里,已经有很多开发者陆续使用了HTML5的部分 ...

  3. 依网友要求发个修改award bios的方法(刷CPU微码)

    注意本文修改的是award BIOS 首先看自己的CPUID是哪个代码,打开CPU-Z如下图红圈中就是,此CPUID就是067A,好了下面就可以开始准备工作 准备好BIOS文件,以及CPU微码文件.可 ...

  4. 使用AnkhSvn-2.5.12478.msi管理vs2013代码的工具安装步骤使用

    安装好AnkhSvn后,按照上面红色画出来的图,进行操作: 需要安装的文件有: AnkhSvn-2.5.12478.msi LanguagePack_1.8.5.25224-x64-zh_CN.msi ...

  5. How to Notify Command to evaluate in mvvmlight

    How to Raize Command to evalituate in mvvm In mvvmlight, we bind our control to the relaycommand obj ...

  6. Eclipse快捷键壁纸-0基础必备

  7. Java实现 Base64、MD5、MAC、HMAC加密

    开始对那些基本的加密还不怎么熟练,然后总结了些,写了一个测试:支持 Base64.MD5.MAC.HMAC加密,长话短说,我们都比较喜欢自己理解,看代码吧! 采用的输UTF-8的格式... packa ...

  8. android开发 根据Uri获取真实路径

    Uri uri = data.getData(); String[] proj = { MediaStore.Images.Media.DATA }; Cursor actualimagecursor ...

  9. 【Path Sum II】cpp

    题目: Given a binary tree and a sum, find all root-to-leaf paths where each path's sum equals the give ...

  10. 如何在Android模拟器上安装apk文件

    1.运行SDK Manager,选择模拟器,并运行模拟器 SDK Manager应用 2.将需要安装的apk文件复制到platform-tools目录下(默认在:D:\tools\android\ad ...