关于DOM

2018-10-30  本文已影响0人  郑宋君

关于DOM有如下的知识点

document 对象
Element(表示html元素)

document:
每个载入浏览器的html文档都会策划归纳为document对象。document对象中包含了文档的基本信息,我们可以通过javascript对html页面中的所有元素进行访问和修改

Element

元素的获取
元素的操作(创建,删除,克隆)
属性文本操作的操作
关于宽高的api

Element对象表示html元素
Element对象可以拥有类型为元素节点,文本节点,注释节点的子节点,DOM提供了一系列的方法可以惊醒元素的增,删,改,查的操作

查询元素(获取元素):

getElementById()
通过id值去获取元素

var item = document.getElementById('itme');

getElementsClassName()
通过class类名去获取元素

var item = document.getElementsClassName('itme');

getElementsByClassName方法的参数,可以是多个空格分隔的class名字,返回同时具有这些节点的元素。

var navItem = document.getElementsClassName('itme nav')

getElementsByName()
通过选择拥有name属性的html元素

//假设有一个dom元素<input name="username">
var int = document.getElementsByName('username')

getElementsByTagName()
通过标签名获取元素

var int = document.getElementByTagName('input')

querySelector()
返回匹配指定的css选择器的元素节点,如果有多个节点满足匹配条件,则返回第一个匹配节点

//选择id为game的元素
var el1 = document.querySelector('#game')
//选择属性type=text的元素
var el2 = document.querySelector('[type=text]')

querySelectorAll()
返回匹配指定的css选择器的元素节点,返回NodeList类型的对象

var li = document.querySelectorAll('li') 

创建元素

createElement()
createElement方法用来生成Html元素节点

var newDiv = document.createElement('div')

createTextNode()
createTextNode()方法用来生成文本接待你,参数为所生成的文本节点的内容

var newText = document.createTextNode('Hello');

createDocumentFragment()
createDocumentFragment()方法生成一个DocumentFragment对象

var docFragment = document.createDocumentFragment();

修改元素

appendChild()
在元素末尾添加元素

<style>
ul{
  border:1px solid red;
  padding:10px;
}
li{
  border:1px solid green;
  height:10px;
}
</style>
<ul></ul>
<script>
function $$(node){
  return document.querySelectorAll(node)
}
var liNew = document.createElement('li')
$$('ul')[0].appendChild(liNew)
</script>

insertBefore()
在元素之前插入元素
xxx.insertBefore(yyy,zzz)
xxx:被插入元素
yyy:插入元素
zzz:在被插入元素之前

  <ul>
    <li>hello</li>
  </ul>
<style>
ul{
  border:1px solid red;
  padding:10px;
}
li{
  border:1px solid green;
  height:30px;
}
</style>
<script>
function $$(node){
  return document.querySelectorAll(node)
}
var liNew = document.createElement('li')
$$('ul')[0].insertBefore(liNew,$$('ul')[0].firstChild)
</script>

replaceChild()
replaceChild()接受两个参数,要插入的元素和要替换的元素

  <ul>
    <li>hello</li>
  </ul>
<style>
ul{
  border:1px solid red;
  padding:10px;
}
li{
  border:1px solid green;
  height:30px;
}
</style>
<script>
function $$(node){
  return document.querySelectorAll(node)
}
var liNew = document.createElement('li')
$$('ul')[0].replaceChild(liNew,$$('ul')[0].firstChild)
</script>

属性操作

getAttribute()获取元素的属性值

node.getAttribute('id')

createAttribute()
createAttribute()方法生成一个新的属性对象节点,并返回它


setAttribute()
用于设置元素的属性

$$('ul')[0].setAttribute('name','我是周杰伦')
//内有两个参数,分别书属性名和属性参数

removeAttribute()
用于删除元素属性

node.removeAttribute('id')
//删除节点id这个属性

innerHTML
元素内html内容
innerText
元素内文本内容
node.value
input可以使用,input内的内容

   <div id="box">
     <span>你好呀</span>
   </div>
   <input type="text" value="aaa"></input>
<script>
function $(node){
  return document.querySelector(node)
}

function $$(node){
  return document.querySelectorAll(node)
}

var html = $('#box').innerHTML
var str = $('#box').innerText
var intStr = $$('input')[0].value
console.log(html)    //<span>你好呀</span>
console.log(str)    //你好呀
$$('input')[0].onclick = function(){
  console.log(intStr)  //aaa
}
</script>

class操作

var nodeBox = document.querySelector('.box')
console.log( nodeBox.classList )
nodeBox.classList.add('active')   //新增 class
nodeBox.classList.remove('active')  //删除 class
nodeBox.classList.toggle('active')   //新增/删除切换
node.classList.contains('active')   // 判断是否拥有 class

修改样式
可以直接修改元素style属性,修改结果直接反应到页面元素

document.querySelector('p').style.color = 'red'
document.querySelector('.box').style.backgroundColor = '#ccc'

获取样式getComputedStyle,最好通过这种方式获取,不要通过Node.style的方式获取

var node = document.querySelector('p')
var color = window.getComputedStyle(node).color
console.log(color)

ps:getComputedStyle可以理解成获取元素的最终的样式

页面宽高

element.clientHeight   element.clientWidth//文本宽高
element.offsetHeight  element.offsetWidth// 文本占据总高(加上border)
element.scrollHeight //元素滚动内容总长度
element.scrollTop  //滚动的高度

常见用法

//判断滚动条是否到底了
//整个滚动区域高度-滚动条高度小于或者等于当前元素高度
  if(box.scrollHeight-box.scrollTop<=box.offsetHeight){
      console.log('到底了')
  }
上一篇 下一篇

猜你喜欢

热点阅读