DOM模型

DOM:文档对象模型(Document Object Model)

         通过DOM可以动态的改变文档内容

动态改变文档内容的原理:

         解析文档(如HTML)并生成DOM树

         通过DOM标准接口+编程语言改变文档内容

DOM树的生成:


DOM树种的节点类型和节点关系:


DOM的操作:

         一查看节点【访问指定节点的方法:

        1.getElementById  
           例: var d=document.getElementById('d'); 
               d.innerText='23333';
               <div id="d"></div>
                效果:div中添加了内容'23333',如图:
                     
2.getElementsByName
           例:var abc=document.getElementsByName('abc');
              <a href="1-核心DOM.html" name="abc">2333</a>
              abc[0].innerText='66666';
              效果:a标签内的内容'2333'变成'66666'
3.getElementsByTagName
	   例:var span=document.getElementsByTagName('span')
              span[0].innerText='55555';
              <span></span>
             效果:span标签内添加了内容'55555',如图:
                  
4.getElementsByClassName
           例:var c=document.getElementsByClassName('c');
              //通过for循环找到所有的class名字为c的标签
              for(var i=0;i< c.length;i++){
              c[i].innerText='88888';
	      <p class="c">7777777</p>
              <p class="c">7777777</p>
              效果:找到所有的class名字为c的标签,标签的内容全部变为'88888'

        二 创建和增加节点【创建和增加节点的方法:

1.createElment():创建节点

                                //创建一个节点(括号内为节点的标签名字),只是创建,并未添加内容和属性

              vara=document.createElement('a');

              a.href='https://www.baidu.com/?tn=57095150_2_oem_dg';
              a.innerText='click';
              //添加元素
              d.appendChild(a);
              效果相当于<a href="https://www.baidu.com/?tn=57095150_2_oem_dg">click</a>

2.appendChild():末尾追加方式插入节点

3.insertBefore():在指定节点前插入新节点

                              例:varp=document.createElement('p');

               p.innerText='23333';
               d.appendChild(p);
               //参数1:要添加的元素  , 参数2:指定节点
               d.insertBefore(p,a);
	      效果:新的标签p添加在a标签之前

4.cloneNode():克隆节点

                             例:

             var spanclone=span.cloneNode(true);//true:克隆里面的内容  
                                                  false或是不加:只克隆标签,无内容
             s.appendChild(spanclone);
             <span id="s">你一定要是个孩子</span>
	      效果:克隆一个span

        三删除和替换节点


查看节点


完整的节点层次的HTML文件:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title></title>
    <script>
        window.onload= function () {
           //通过id找到所在的td
            var t1=document.getElementById('t1');
            //获取td的父节点元素tr
            var tr=t1.parentNode;
            tr.style.backgroundColor='blue';
            //获取所得父节点tr的第一个子元素节点
            var t2=tr.firstElementChild;
            t2.innerText='111';
            //获取所得父节点tr的最后一个子元素节点
            var t3=tr.lastElementChild;
            t3.innerText='333';
            //获取所的节点tr的第二个子元素节点,通过第三个子元素找前一个节点找到第二个子元素节点
            var t4=t3.previousElementSibling;
            t4.innerText='222';
            //获取所的节点tr的第二个子元素节点,通过第一个子元素找后一个节点找到第二个子元素节点
            var t4=t2.nextElementSibling;
            t4.innerText='2222';
        }
    </script>
</head>
<body>
<table>
    <tr>
        <td>1</td>
        <td>2</td>
        <td>3</td>
    </tr>
    <tr>
        <td id="t1">1</td>
        <td>2</td>
        <td>3</td>
    </tr>
</table>
</body>
</html>

完整的查看节点的html文件:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title></title>
    <script>
        /*文档就绪函数*/
        window.onload=function(){
            var d=document.getElementById('d');
            /*添加文本信息*/
           // d.innerHTML='23333';   //可以添加标签,文本信息
            d.innerText='23333';   //只能添加文本信息
            var abc=document.getElementsByName('abc');
            /!*通过下标得到对应元素*!/
            abc[0].innerText='66666';//getElementsByName中的Elements表明元素不只有一个,
                                        所以通过下标[0]找到第一个元素

            /!*通过标签名字得到对应元素*!/
            var span=document.getElementsByTagName('span')
            span[0].innerText='55555';

            /!*通过class得到对应元素*!/
            var c=document.getElementsByClassName('c');
            for(var i=0;i< c.length;i++){
                c[i].innerText='88888';
            }
        }


    </script>
</head>
<body>
<div id="d"></div>
<a href="1-核心DOM.html" name="abc">2333</a>
<span></span>
<p class="c">7777777</p>
<p class="c">7777777</p>
</body>
</html>
效果如图:
创建和增加节点的完整HTML文件:
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title></title>
    <script>
        window.onload=function(){
            var d=document.getElementById('d');
            //创建一个节点(括号内为节点的标签名字),只是创建,并未添加内容和属性
            var a=document.createElement('a');
            a.href='https://www.baidu.com/?tn=57095150_2_oem_dg';
            a.innerText='click';
            //添加元素
            d.appendChild(a);

            //在指定节点前插入新节点
            var p=document.createElement('p');
            p.innerText='23333';
            d.appendChild(p);
            //参数1:要添加的元素  , 参数2:指定节点
            d.insertBefore(p,a);

            //获取目标元素
            var span=document.getElementById('s');
            //克隆新元素
            var spanclone=span.cloneNode(true);//true:克隆里面的内容  false或是不加:只克隆标签,无内容
            s.appendChild(spanclone);

        }
    </script>
</head>
<body>

<div id="d"></div>
<span id="s">你一定要是个孩子</span>
</body>
</html>
效果如图:

修改节点的完整HTML文件:
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title></title>
    <script>
        /*文档就绪函数,文档加载完后才出现效果*/
        window.onload=function(){
            //通过id找到对应元素
            var d=document.getElementById('d');

            //修改颜色(两种方式)
            d.style.color='red';
          d.style.cssText='coloryellow';

           //字体加粗 +=增加新的样式,即样式是增加的 ,如果是=的话,只是显示最后的style样式,覆盖以前的所有样式
            d.style.cssText+='font-weight:bold';

            //字体大小
            d.style.cssText+='font-size:large';

            //添加类名
            d.className='a';//添加class='a'
          d.className+='a';//class变成'aa'
          
        }
    </script>
</head>
<body>
<div id="d">
    空白格
</div>
</body>
</html>



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值