DOM(文档对象模型)

DOM

  • DOM ==> Document Object Model (文档 对象 模型)

  • document 是DOM中的顶级对象 其上一级是window对象

  • 要操作页面的中标签元素,我们要先获取到标签元素

小知识:什么是伪数组

  • 伪数组 和数组一样都有索引下标和length属性表示长度

    但是伪数组不能使用数组方法(数组.forEach/数组.map)

获取DOM方法

getElementById

  • 通过id获取 id的element后面是没有s的

  • 语法:document.getElementById("标签的id属性值")

  • 返回值:标签元素; 若匹配不到则返回null

    var div1 = document.getElementById("sex")
    console.log(div1)

getElementsClassName

  • 通过class获取

  • 语法:document.getElementsClassName("类名")

  • 返回值:对应类名的标签形成的伪数组; 若匹配不到同上

    var div1 = document.getElementsByClassName('no');
     console.log(div1);//
    var div66 = document.getElementsByClassName('div66');
    console.log(div66);

getElementsByTagName

  • 通过获取标签名

  • 语法:document.getElementsByTagName("标签名")

  • 返回一个伪数组,里面是匹配的标签;若匹配不到同上

    var lis2 = document.getElementsByTagName('li');
    console.log(lis2);
    var uls = document.getElementsByTagName('ul');
    console.log(uls);

querySelector

  • 通过选择器获取元素

  • 语法:querySelector("选择器")

  • 返回匹配到的第一个元素,里面是匹配的选择器(写法与css样式中一样即可);若匹配不到同上

    console.log(document.querySelector('#one'));
    console.log(document.querySelector('li'));
    console.log(document.querySelector('#id'))

querySelectorAll

  • 通过选择器获取元素

  • 语法:querySelectorAll("选择器")

  • 返回匹配到的所有元素伪数组,里面是匹配的选择器;若匹配不到同上

    console.log(document.querySelectorAll('#one'));
    console.log(document.querySelectorAll('li'));
    console.log(document.querySelectorAll('lilili'));

操作DOM属性(先获取才可使用)

<body>
  <div class = 'cls cls1' id="divId" num ='10' style="color: red;font-size:20px;"><p>are you ok?</p></div>
</body>

操作标签内容

  • .innerText 获取设置标签的文本(不能识别标签)

  • .innerHTML 获取设置标签的超文本(识别标签)

  • 注意 : 设置是直接覆盖性的设置

    var div = document.getElementsByTagName('div')[0];
    console.log(div.innerText); 
    div.innerText = 'thank you'; // thank you
    div.innerText = '<i>thank you</i>'; // <i>thank you</i>
    ​
    console.log(div.innerHTML); // <p>are you ok?</p>
    div.innerHTML += '<i>thank you</i>';  //使用+=拼接原来的内容

操作标签属性

  • .getAttribute( 属性名 ); 获取标签属性

  • .setAttribute( 属性名,属性值 ); 设置标签和值

  • .removeAttribute( 属性名 ); 删除标签的属性

    var div = document.getElementsByTagName('div')[0];
    //获取标签属性
    div.getAttritube("id")
     // 设置标签属性
    div.setAttribute('index','666');
    div.setAttribute('id','good');
    ​
      // 移除标签的属性
    div.removeAttribute('num');
    div.removeAttribute('id')

操作标签的行内式的css

  • .style 获取标签的所有css(包含全部的未设置css也会获得)

  • .style.样式 获取设置标签的行内样式值

    var div = document.getElementsByTagName('div')[0];
      // 获取标签的行内样式
    console.log(div.style);//  对象(包含所有的css)
    console.log(div.style.color);   //red
    div.style.color = 'yellow';  // color:yellow
      // css中的样式名,如果是多个单词组成的,在js要使用小驼峰写法
    div.style.fontSize = '50px'; // fontSize:50px; 	

操作设置标签的类名

  • .className 获取标签的类名

  • 注意 : 设置是直接覆盖性的设置

    var div = document.getElementsByTagName('div')[0];
      // 获取设置标签的类名
      // console.log(div.className); 
    div.className = 'green';
    div.className += ' green';   // 这是为了添加而不是直接覆盖掉原先存在的类名

DOM节点

  • DOM节点就是DOM中html的所有内容

常见节点的分类

  1. 文本节点 html中的文本内容和空格换行 innerText

  2. 元素节点 标签 getElement...

  3. 属性节点 标签中的属性 getAttribute

获取节点

  <p>我是p</p>
  文本文字
  <div  id="p1" class="cls1 cls2" index='12'>
    空格回车文字
    <p>我是p1标签</p> <p>我是p2标签</p><p>我是p3标签</p><!-- 注释 --></div>
    <span>我是span</span>
  • 获取节点也需要先获取DOM

    本小节使用
      var div = document.getElementsByTagName('div')[0];
    

childNodes

  • 语法: div.childNodes 获取元素的所有子节点

  • 返回值: 子节点的伪数组

    console.log(div.childNodes);
    

children

  • 语法: div.children 获取元素的所有子元素节点

    console.log(div.children);
    

firstChild

  • 语法: div.firstChild 获取元素的第一个子节点

    console.log(div.firstChild);
    

lastChild

  • 语法: div.lastChild 获取元素的最后一个子节点

    console.log(div.lastChild);
    

fristElementChild

  • 语法: div.fristElementChild 获取元素的第一个子元素节点

    console.log(div.firstElementChild);
    

lastElementChild

  • 语法: div.lastElementChild 获取元素的最后一个子元素节点

    console.log(div.lastElementChild);
    

nextSibling

  • 语法: div.nextSibling 获取元素的下一个兄弟节点

    console.log(div.nextSibling);
    

previousSibling

  • 语法: div.previousSibling 获取元素的上一个兄弟节点

    console.log(div.previousSibling);
    

nextElementSibling

  • 语法: div.nextElementSibling 获取元素的下一个元素兄弟节点

    console.log(div.nextElementSibling);
    

previousElementSibling

  • 语法: div.previousElementSibling 获取元素的上一个元素兄弟节点

    console.log(div.previousElementSibling);
    

parentNode

  • 语法: div.parentNode 获取元素的父级元素

    console.log(div.parentNode);
    

Attribute

  • 语法: div.attributes 获取元素的所有属性节点 返回的是属性节点伪数组

    console.log(div.attributes)
    

节点属性

nodeType

  • 获取的节点类型是使用数字表示的;

    console.log(eleNode.nodeType)  // (元素节点)1
    console.log(attrNode.nodeType) // (属性节点)2
    console.log(textNode.nodeType) // (文本节点)3
    console.log(commentnode.nodeType)  //(注释节点)8

nodeName

  • 获取节点的名称

    console.log(eleNode.nodeName) // LI   (返回的都是大写的)
    console.log(attrNode.nodeName) // test    (属性名)
    console.log(textNode.nodeName) // #text    (#text)

nodeValue

  • 获取节点的值

    console.log(eleNode.nodeValue)     元素节点没有值输出null
    console.log(attrNode.nodeValue)		属性节点输出属性值
    console.log(textNode.nodeValue) 	文本节点输出文本内容(包括空格和回车)

操作节点

操作DOM节点,无外乎就是 增删改查

createElement;

  • 用于创建一个元素节点;

    var oSpan = document.createElement("span")
    console.log(oSpan)  //  <span></span>

createTextNode;

  • 用于创建一个文本节点;

    var oText = document.createTextNode("虾仁猪心")
    console.log(oText)   // 输入文本的内容

appendChild( );

  • 语法:元素A.appendChild(节点B)

  • 将节点B追加到元素A里面的后面

    var oText = document.createTextNode("虾仁猪心")
    document.body.appendChild(oText);  // 

insertBefore( );

  • 语法 : 元素A.insertBefore(节点B,元素C)

  • 将节点B添加到元素A里面的元素C的前面

    var oEle = document.createElement("div")
    var oSpan = document.querySelector("span")
    var d = document.body.insertBefore(oEle,oSpan)
    console.log(d)

removeChild( );

  • 语法 : 元素A.removeChild(节点B);

  • 将元素A中的节点B删除

    var oEle = document.createElement("div")
    var oSpan = document.querySelector("span")
    var del = document.body.removeChild(oSpan);

replaceChild( );

  • 语法 : 元素A.replaceChild(节点B,节点C);

  • 使用节点B替换掉元素A中的节点C;

    var oEle = document.createElement("div")
    var oSpan = document.querySelector("span")
    var d = document.body.replaceChild(oEle,oSpan)

cloneNode( );

  • 语法: 元素A.cloneNode(参数);

  • 参数默认是布尔值false ,如果是true则克隆子元素

  • 返回值:克隆复制的元素

    var oEle = document.createElement("div")
    
    
    var oSpan = document.querySelector("span")
    var clo = oSpan.cloneNode(true);
    console.log(clo)

获取全局的css样式(存在兼容)

getComputedStyle( ) 全能获取型

  • 语法 : window.getComputedStyle(元素,参数).样式名

  • 参数:

    1. null 空着不写就代表空

    2. before/after 可以获取元素伪类的样式

    console.log(window.getComputedStyle(div).width);
    console.log(window.getComputedStyle(div,null).border);

curentStyle( )

  • 语法 : 元素.currentStyle.样式

    var oDiv = document.querySelector('div');
    console.log(oDiv.currentStyle.width); 

获取元素的尺寸

获取元素的偏移量

offsetLeft offsetTop

  • 确认有没有定位属性

    1. 如果元素没有定位。则获取的是相对于页面的左上角

    2. 如果元素有定位,则获取的是相对父元素左上角的定位

    var oDiv = document.querySelector('#dv');
    console.log(oDiv.offsetLeft);
    console.log(oDiv.offsetTop);

offsetWidth offsetHeight

  • 获取元素 内容宽高 + padding宽高 + border宽高 的和

    获取浏览器的宽高
    
    document.body.offsetWidth;
    获取浏览器的宽高一般使用另一种方法;
    
    document.documentElement.clienWidth/clienHight;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值