美文网首页
dom继承树,dom基本操作

dom继承树,dom基本操作

作者: 浮巷旧人 | 来源:发表于2018-08-06 00:12 被阅读0次

dom结构树

document -->HTMLDocument.prototype-->Document.prototype
document.body --> <body>~~<body>
document.head --> <head>~<head>
document.documentElement--><html>--<html>

dom基本操作

1.getElementByID方法定义在Document.prototype上,即Element节点上不能使用
2.getElementByName方法定义在HTMLDocument.prototype上,即非html中的document不能使用(xml document Element)
3.getElementByTagName方法定义在Document.prototype和Element.prototype上
4.HTMLDocument.prototype定义了一下常用的属性,body,head,分别指代HTML文档中的<body><head>标签
5.Document.prototype上定义了documentElement属性,指代文档的根元素,在HTML文档中,他总是指代<html>元素
6.getElementByClassName,querySelectorAll , querySelector在Document.prototype, Element.prototype类中均有定义

  • 封装函数,返回元素e的第n层祖先元素节点
<div>
      <strong>
                <span>
                      <i></i>
                </span>
       </strong>
</div>
function retParent(elem,n){
      while(elem&n){
          elem = elem.parentElement;
          n --;
      }
     return elem;
}
var i = document.getElementByTagName('i')[0];
  • 封装函数,返回元素e的第n个兄弟元素节点,n为正,返回后面的兄弟元素节点,n为负,返回前面的,n为0,返回自己。
<div>
    <span></span>
    <p></p>
    <strong></strong>
    <i></i>
    <address></address>
</div>
function retSibling(e,n){
    while(e&&n){
       if(n>0){
          e = e.nextElementSibling;
          n --;
        }else{
          e = e.previousElementSibling;
          n ++;
        }
      }
      return e;
  }


document.createElement();创建元素
document.createTextNode();创建文本
document.createComment();创建注释
document.createDocumentFragment();

parentNode.appendChild();剪切
parentNode.insertBefore(a,b);insert a before ba在b前面

<div>
    <i></i>
    <strong></strong>
    <span></span>
  </div>
i 和strong是后加的  span和 div是原始的  被选的
var div = document.getElementByTagName('div')[0];
var span = document.getElementByTagName('span')[0];
div.appendChild(span);
var strong = document.createtElement('strong');
var i = document.createElement('i');
div.insertBefore(strong,span);
div.insertBefore(i,strong);


parent.removeChild();剪切
child.remove();删除
替换
parent.replaceChild(new,origin);

  • Element节点的一些属性
    innerHTML获取内容 或者写入东西覆盖原本的内容 div.innerHTML = "123";
    innerText(火狐不兼容)/textContent(老版本IE不好使)
    Element节点的一些方法
    ele.setAttribute('class','example');为元素设置行间属性
    div.setAttribute('id','only')
    ele.getAttribute();
    div.getAttribute('id'); -->only
  • 如果要改的话 直接div.className='' div.id=''
<div>
     <a href='#' data-log='0'>hehe</a>
</div>
var  a = document.getElementByTagName('a')[0];
a.onclick = function(){
   console.log(this.getAttribute('data-log'));
}


<div></div>
<span></span>
<strong></strong>
var  all = document.getElementByTagName('*');
for (var i = 0 ; i<all.length; i ++){
 all[i].setAttribute('this-name',all[i].nodeName);
}
  • 封装函数insertAfter(); 功能类似insetBefore();
<div>
    <i></i>
    <b></b>
    <span></span>
</div>
Element.prototype.insertAfter = 
function(targetNode,  afterNode){
var beforeNode = afterNode.nextElementSibling;
      if(beforeNode == null){
        this.appendChild(targetNode);
       }else{
       this.insertBefore(targetNode,beforeNode);
      }
}
var b = document.getElementsByTagName('b')[0];
var div = document.getElementsByTagName('div')[0];
var span = document.getElementsByTagName('span')[0];
var p = document.createElement('p');







相关文章

网友评论

      本文标题:dom继承树,dom基本操作

      本文链接:https://www.haomeiwen.com/subject/abiivftx.html