js中关于DOM

 

1.获取元素
只有id和querySelector返回的是元素,其他的返回都是数组
//通过id获取,返回的是元素
        var box=document.getElementById('box')
        console.log(box);

        //通过Class属性名来获取,返回一个伪数组(HTMLCollection)
        var content=document.getElementsByClassName('content')
        console.log(content);
        console.log(content[0]);//访问第一个获取的元素

        //通过标签名 返回伪数组
        var div=document.getElementsByTagName('div')
        console.log(div);

        //通过name属性来获取元素,返回伪数组(NodeList)
        var nav=document.getElementsByName()
        console.log('nav');

        //通过对应的选择器进行获取,返回伪数组(NodeList)
        var d=document.querySelectorAll('div')//传入的选择器为div

        //通过选择器获取元素,返回查找到的元素
        var first=document.querySelector('div')//获取第一个元素

        //创建全局内容
        //返回一个元素 创建元素
        var p=document.createElement('p')//传入的是一个对应的标签名
        console.log(p);

        //返回一个属性对象  创建属性节点
        var sttr=document.createAttribute('password')//默认属性值为空
        //给属性对象赋值
        attr.value='12345'
        console.log(attr);

        //返回文本节点对象 创建文本节点
        var text=document.createTextNode('显示内容')
        console.log(text);
        //后面带NS表示的是命名空间,内声明或获取
2.Element属性
var div=document.getElementsByTagName('div')[0]//得到的是一个数组,所以值要用数组发方法取出
    console.log(div);
    //获取父元素
    console.log(div.parentElemnet);//body
    //获取子元素
    console.log(div.childElementCount);//子元素个数
    console.log(div.children);//获取子元素 (伪数组)
    //获取兄弟元素结点
    //前一个兄弟
    console.log(div.previousElementSibling);
    //后一个兄弟元素结点
    console.log(div.nextElementSibling);
3.Element的替换
//用一个新的元素替换里面的元素
    div.replaceChildren("您好")//替换所有的子节点,用传入的结点替换里面所有的子节,div里面的内容变成传入的内容

    var content=document.createElement('div')//创建了一个div
    // 用一个新的元素替换里面所有的元素
    div.replaceChildren(content)//替换所有子节点 div里面的内容都被替换成了content
    //replaceChild 用前面的替换后面的(一定属于本身的儿子元素)
    var a=document.createElement('a')//创建一个a标签
    //使用新结点来替换对应的子节点,使用a这个元素来替代对应的content这个子元素
    div.replaceChild(a,content)//只能替换一个子元素,a替换content
4.Element插入元素和删除元素
 div.append('hello',content)//追加多个内容到此元素里面元素的后面
    //appedChild 追加子元素
    div.appendChild(content)//追加一个元素在当前元素的里面(追加的元素如果里面已经存在不能再添加,同一个元素只能加一次)
    div.appendChild(a)//相当于把之前那个已经存在的元素删除,再添加进去
    //insertBefore 插入一个元素到任意一个子元素的前面
    var span=document.createElement('span')
    //参数1当前需要插入的元素 参数2 对应的子元素
    div.insertBefore(span,div.children[0])
    //删除元素
    // div.remove()//全部删除,包括自己
    //清空所有内容 利用appendChild('')
5.克隆
 var clone=div.childNodes//进行元素克隆
    console.log(clone);//只克隆自己,不会克隆里面的内容
    var clone1=div.cloneNode(true)//里面是true的情况表示深度克隆,会克隆所有的内容
    console.log(clone1);
6.元素的其他属性
//元素的其他属性,所有元素都有的属性
    console.log(div.style);//用于获取div里面的style属性,只能读取里面有的
    console.log(div.style.width);//查看宽 可以设置div的宽
    console.log(div.style.height);
    //设置属性值 element.style.样式名
    div.style.backgroundColor='red' 
    //className 获取对应的class名字
    console.log(div.className);//返回big
    div.className='class' //修改class属性值
    console.log(div.className);//返回class
    //id 获取对应的id
    console.log(div.id);//空值,因为没有定义id属性值
    div.id='nav' //设置id属性值
    console.log(div.id);//返回nav
    //title 获取对应的属性值
    console.log(div.title);//空值,因为没有定义title属性值
    div.title='element' //设置title值
    console.log(div.title);//返回element

7.tagName
只读属性:获取父元素、子元素、兄弟元素、tagName
//tagName 返回的是大写的字符串  只读属性
    console.log(div.tagName);//DIV
    console.log(a.tagName);//A
8.所有元素对本身自带属性都可以直接获取和设置出来 (元素.属性名)
//所有元素对本身自带属性都可以直接获取和设置出来 (元素.属性名)
        var input=document.querySelector('input');
        console.log(input.placeholder);//空值
        input.placeholder='请输入'
        console.log(input.placeholder);//请输入
        console.log(input.value);
        input.value='用户名'
        console.log(input.value);//用户名
        var img=document.querySelector("img");
        console.log(img.src);
9.innerHTML及innerText
//innerHTML显示html所有的内容 innerText显示文本的内容
concole.log(div.innerHTML);
concole.log(div.innerText);
div.innerHTML="<b>hello<b>"//解析html代码
div.innerText="<b>hello<b>"//不会解析html代码
10.相关的方法
cloneNode 克隆所有节点
cloneNode(true) 表示深度克隆,会克隆所有的内容,浅克隆只会克隆标签
append() 添加节点
appendChild() 添加节点
replaceChild() 替换节点
replaceChildren() 替换所有的子节点
insetBefore() 插入节点
removeChild()
11.属性节点操作方法
setAttributeNode 设置属性节点
getAttributeNode 获取属性节点
removeAttrbuteNode 删除属性节点
12.节点类型
空文本:空格、换行及制表符都是空文本节点
nodeType 节点类型(1表示元素节点 2表示属性节点 3表示文本节点)
nodeValue 节点值 (元素节点的节点值获取不到就会返回null,属性节点的节点值:属性值 ,文本节点的节点值:文本内容)
nodeName 节点名 (元素节点的节点:标签名,属性节点:属性名,文本节点:#text

 

var cont1=document.createElement('a')//元素结点
cont1.innerHTML='hello'
var cont2=document.createAttribute('name')//属性结点
cont2.value='张三'
var text=document.createTextNode("hello")//文本结点
//nodename 节点名,元素的节点名是大写,属性节点名是小写,文本节点是#text(只读属性)
console.log(cont1.nodeName,cont2.nodeName,text.nodeName);//A name #text
console.log(cont1.nodeType,cont2.nodeType,text.nodeType);//1 2 3
console.log(cont1.nodeValue,cont2.nodeValue,text.nodeValue);//null '张三' 'hello'
13.节点属性
var ele=document.querySelector("a");
ele.append(text)
console.log(ele.parentNode);//获取父节点 div
console.log(text.parentNode);//获取父节点  a
console.log(ele.childNodes);//获取所有的子节点 [text] (空格以及回车都是文本节点)不包含属性节点(元素和文本)
console.log(ele.length);
//获取所有属性节点 //伪数组 (key:value) 迭代器
console.log(ele.attributes);//NamedNodeMap {0: href, href: href, length: 1}
console.log(ele.attributes.length);//1
//访问
console.log(ele.attributes[0]);//属性节点对象 href=""
console.log(ele.attributes['href'].nodeValue);
console.log(ele.attributes['href'].value);

 

 

 

posted @ 2022-08-09 19:07  喜欢四季的春天  阅读(13)  评论(0编辑  收藏  举报