DOM节点操作

DOM(document object model)文档对象模型

作用如下:

  • 1、动态操作元素的属性

  • 2、动态的操作元素的样式属性

  • 3、动态的实现元素的节点操作

获取元素节点

getElementById() 根据元素id获取一个元素节点

<div id='box1'>111</div>
<script>
    let box1=getElementById('box1');
</script>

getElementsByClassName() 根据元素class获取多个元素节点

<ul>
     <li class="items"></li>
     <li class="items"></li>
     <li class="items"></li>
     <li class="items"></li>
     <li class="items"></li>
</ul>
let items=getElementsByClassName('items');
//带s的获取到的是一个数组,得循环遍历
for(var i in items){
   console.log(items[i]);
}

getElementsByTagName()返回指定标签名来获取一组元素对象

<ul>
     <li></li>
     <li></li>
     <li></li>
     <li></li>
     <li></li>
</ul>
let items=getElementsByTagName('li');
//带s的获取到的是一个数组,得循环遍历
for(var i in items){
   console.log(items[i]);
}

getElementsByName()返回name属性值的一组元素节点

主要用于表单项

<input name="names" type='text'>
<input type="password" name="names">
let names=document.getElementsByName('names');

querySelector() 返回指定选择器的第一个元素对象

<ul>
     <li></li>
     <li></li>
     <li></li>
     <li></li>
     <li></li>
</ul>
let item=document.querySelector('ul>li');//返回ul下的第一个li

querySelectorAll() 返回指定选择器的所有对象集合

<ul>
     <li></li>
     <li></li>
     <li></li>
     <li></li>
     <li></li>
</ul>
let item=document.querySelectorAll('ul>li');//返回ul下的所有li

其他获取节点方法

// ele.nextSibling 获取元素的下一个兄弟节点
// ele.previousSibling 获取元素的上一个兄弟节点
// ele.nodeName 节点名称
// ele.nodeValue 节点的值
// ele.nodeType 节点类型
// ele.children 获取当前元素所有的子节点
// ele.lastChild 获取当前元素的最后一个子节点
// ele.parentNode 获取当前元素的父节点
// document.body 返回某个节点对象
// document.head 返回头部节点对象

属性节点

获取+设置属性的值

方法一

getAttribute('src')//获取元素属性
element.setAttribute('height','350')//设置属性

方法二

读取谁就要.谁 XXX.value xxx.name xxx.type 特殊就是class属性,需要通过className来读取 可以通过classList来获取一组class

element.属性//获取元素属性
element.属性=''//设置元素属性

增加属性 :增加什么就 . 什么

element.className//增加class属性
element.id='';//增加id属性

修改属性内容

对于没有结束标签的元素,不可使用

ele.innerText//元素内部的文本
ele.innerHTML//元素内部的html代码

样式属性

操作元素样式属性:内联样式

ele.style.css样式属性='值'

divEle.style.fontSize="3em";
divEle.style.position = "relative";
divEle.style.left="100px"
divEle.style.top="100px"
divEle.style.border="2px solid red"

.....之前css怎么写,现在就怎么写

创建元素节点

document.createElement(tagName) 创建节点

var div = document.createElement('div');//<div>shihh</div>
div.innerHTML='shihh';
var img =document.createElement('img');//img

document.createTextNode ='value' 创建文本节点

var text=document.createTextNode='xxxx';
var p=document.createElement('p');//创建一个p
p.innerText=text;//将创建的文本节点放进p元素里

插入元素节点

ele.appendChild(ele) 给元素追加一个子节点

var div = document.createElement('div');//创建一个节点div
var a=document.createElement('a')//创建一个节点a
div.appendChild(a);//将a追加给div 将a放进div里

insertAdjacentElement 向元素的指定位置插入子元素

 元素.insertAdjacentElement('位置', 元素);

insertAdjacentHTML 向元素的指定位置插入HTML代码

元素.insertAdjacentHTML('位置', 'HTML代码');

insertAdjacentText 向元素的指定位置插入文本内容

元素.insertAdjacentText('位置', '文本内容');

注意:位置需要传递一个字符串作为参数

 'beforebegin' 开始标签前,成为当前元素的前一个兄弟元素
 'afterbegin' 开始标签后,成为当前元素的第一个子元素
 'beforeend' 结束标签前,成为当前元素的最后一个子元素
 'afterend' 结束标签后,成为当前元素的后一个兄弟元素

复制元素节点

ele.cloneNode(false) 浅复制

只复制节点本身

var div =document.createElement('div');//创建一个节点div
var a=document.createElement('a')//创建一个节点a
var a2=a.cloneNode(a);//复制节点a 给a2
div.appendChild(a);//将a追加给div 将a放进div里
div.appendChild(a2);//将a2放进div里

ele.cloneNode(true) 深复制

对节点进行深复制(复制节点本身及所有的后代节点)

注意:一个节点不能追加多次,只能重新克隆一个节点或者创建一个节点追加

删除元素节点

ele.remove() 删除元素自身

fathere.removeChlid() 删除元素的子节点

<table>
   <tr>
    <td>
       <button></button>
    </td>
   </tr>    
</table>
let table=document.querySelector('table');
let trs=document.querySelector('tr');
let tds=document.querySelectorAll('td');
let btn=document.querySelectorAll('button');
//点击按钮删除一行tr;
btn.onclick=fouction(){
    table.removeChild(this.parentNode.parentNode);
    //找到要删除对象的父节点(table),和要删除的对象(button的父节点的父节点 --tr)
}

小案例

        用table 表格 遍历(动态生成dom)

//动态的创建一个表格,并传入数据,添加一个删除按钮,实现点击按钮删除当前一行 
var dataList = [{
            sid: "201804111",
            name: "易烊千玺",
            sex: "男",
            like: "街舞",
            tel: "13838385438",
            address: "湖北武汉",
            subjects: "软件工程"
        }, {
            sid: "201804112",
            name: "任嘉伦",
            sex: "男",
            like: "拍戏跳舞",
            tel: "13838385438",
            address: "湖北武汉",
            subjects: "软件工程"
        }, {
            sid: "201804113",
            name: "魏大勋",
            sex: "男",
            like: "讲笑话",
            tel: "13838385438",
            address: "湖北武汉",
            subjects: "软件工程"
        }, {
            sid: "201804114",
            name: "张颜齐",
            sex: "男",
            like: "唱歌跳舞",
            tel: "13838385438",
            address: "湖北武汉",
            subjects: "软件工程"
        }, {
            sid: "201804111",
            name: "鹿晗",
            sex: "男",
            like: "关晓彤",
            tel: "13838385438",
            address: "湖北武汉",
            subjects: "软件工程"
        }];
        var table = document.createElement('table');
        table.border = '1';
        table.width = '600';
        table.style.textAlign = "center";
        table.style.borderColor = 'pink';
        table.style.height = '200px';
        table.style.margin = '20px auto';
        //创建表头
        var tr = document.createElement('tr');
        table.appendChild(tr);
        var colsTitle = ['学号', '姓名', '性别', '爱好', '手机号', '籍贯', '学科', '操作']
        for (var i in colsTitle) {
            var th = document.createElement('th');
            th.innerText = colsTitle[i];
            tr.appendChild(th);
        }
        //创建表格内容
        for (var k in dataList) {
            var tr = document.createElement('tr');
            table.appendChild(tr);
            for (var k2 in dataList[k]) {
                var td = document.createElement('td');
                td.innerText = dataList[k][k2];
                tr.appendChild(td);
            }
            var td = document.createElement('td');
            tr.appendChild(td);
            var btn = document.createElement('button');
            //console.log(btn);
            btn.innerHTML = '删除';
            td.appendChild(btn);

        }
        document.body.appendChild(table);
        var tab = document.querySelector('table');
        var btns = document.getElementsByTagName('button');
        for (var y = 0; y < btns.length; y++) {
            btns[y].onclick = function() {
                if (confirm('你确定要删除这一行吗?')) {
                    var tr = document.querySelectorAll('tr');
                    tab.removeChild(this.parentNode.parentNode);
                }
            }
        }
    </script>

运行结果如下图:

可以点击删除:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值