JavaScript知识总结(11)-Dom思维导图

来源博客:【Harryの心阁

Dom 树

思维导图

自定义属性

  1. 在页面暂时保存数据而不是数据库
  2. 规定自定义属性以data-开头,自定义属性
  3. h5新增获取 属性.dataset.(要获取的属性),必须以data开头
  4. 如果是list-index-name 使用新特性时获取采用驼峰命名法

节点操作

  1. 兄弟关系和父子关系,层次关系(node)
  2. nodeType(节点类型),nodeName(节点名称),nodeValue(节点值)
  3. 元素节点nodeType=1,属性为2,文本,空格换行等等为3
  4. 父亲节点 parentNode找不到父节点返回为 null,返回的是最近的父元素
  5. 孩子节点childNodes得到的所有节点包括元素节点文本节点等等,一般不使用childNodes,使用非标准的parentNode.children可获取所有的子元素
  6. firstchild/lastchild获取的是第一个节点文本节点或者元素节点
  7. firstElementChild/last返回的是第一个子元素节点(兼容性问题)
    <ul>
        <li>1</li>
        <li>2</li>
        <li>3</li>
        <li>4</li>
        <li>5</li>
        <li>6</li>
        <li>7</li>
        <li>8</li>
    </ul>
    <script>
        var ul = document.querySelector('ul');
        var lis = ul.querySelectorAll('li');
        console.log(ul.children);
        console.log(ul.firstElementChild);
        console.log(ul.children[0]);
        console.log(ul.children[ul.children.length - 1]);
    </script>

兄弟节点

  1. nextSibling下一个兄弟节点,nextElementSibling
  2. 和父亲节点类似,previousELementSibling上一个元素节点

添加节点

  1. node.appendChild(child)node父级 child是子级
  2. 创建元素节点 document.createElement(‘元素’)
  3. node.insertBefore(child,指定元素)

实例化操作

  1. 演示站点 【第一屏
  2. 大量使用节点,比如节点的增加与删除等等

删除节点

  1. 父元素.removeChild[索引号]
  2. disabled禁用按钮
  3. 阻止链接跳转,javascript:void(0);或者javascript:;

复制节点

  1. 括号为空或者里面时false 浅拷贝,只复制标签不复制内容
  2. 括号里面为true,深拷贝,复制标签及其里面的内容

动态创建表格

  1. 使用双循环,类似于冒泡排序,一个循环控制行,一个循环控制列
  2. 使用for…in 遍历数组属性,属性值
  3. 巧妙使用删除节点实现整行或者整列删除
<style>
    * {
        padding: 0;
        margin: 0;
    }
    table{
        border: 1px solid #888;
        border-bottom: 0;
        border-right: 0;
        border-radius: 5px;
        overflow: hidden;
    }
    th,
    td {
        border-right: 1px solid #888;
        border-bottom: 1px solid #888;
    }
    thead{
        background-color: #ccc;
    }
    tbody{
        text-align: center;
    }
    table {
        width: 400px;
        margin: 12.5rem auto;
    }
</style>

<body>
    <table cellspacing="0">
        <thead>
            <tr>
                <th>name</th>
                <th>subject</th>
                <th>score</th>
                <th>你好世界</th>
            </tr>
        </thead>
        <tbody>
        </tbody>
    </table>
    <script>
        var dates = [{
            name: 'G先生',
            subject: 'java',
            score: 100
        },
        {
            name: 'Q先生',
            subject: 'java',
            score: 99
        },
        {
            name: 'W先生',
            subject: 'java',
            score: 98
        },
        {
            name: 'T先生',
            subject: 'java',
            score: 97
        }];
        console.log(dates.length);
        var tbody = document.querySelector('tbody');
        for(var i = 0;i<dates.length;i++){
            var tr = document.createElement('tr');
            tbody.appendChild(tr);
            for(var k in dates[i]){
                var td =document.createElement('td');
                td.innerHTML = dates[i][k];
                tr.appendChild(td);
            }
            var td = document.createElement('td');
            td.innerHTML = '<a href="javascript:;">删除</a>'
            tr.appendChild(td);
            // 获取要点击得孩子节点,删除父元素,就需要找上级的上级
            tr.children[tr.children.length - 1].onclick = function(){
                tbody.removeChild(this.parentNode);
            }
        }
    </script>

创建元素

  1. document.write(’’),如果页面文档流加载完毕,在调用后页面重绘效果不好
  2. innerHTML 创建多个元素时效率会低一些(采取拼接字符串),采取数组时效率最高

arr.push(’’) 在转换为arr.join(’’)字符串

  1. document.createElement(’’) 创建多个元素时效率较第二种高,使用数组转化时效率最高
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Harry-iu

顺手给小编加个鸡腿????

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值