Java复习打卡day40

这篇博客主要探讨了XML DOM的相关操作,包括节点的遍历、删除、属性操作、节点创建、复制、替换,以及select和table对象的使用。
摘要由CSDN通过智能技术生成

XML DOM

介绍

1.基本介绍:
XML DOM 定义了访问和处理xml文档的标准方法。
XML DOM是 XML Document OObject Model 的缩写,即XML文档对象模型。
2.在学习之前,您应当具备的基础:
·HTML/XHTML
·JavaScript
·XML
如果大家在学之前没有掌握这些知识,可以查阅js 手册(网址:https://www.w3school.com.cn/xmldom/dom_intro.asp)
3.什么是DOM?
DOM是W3C(万维网联盟)的推荐标准;
    “DOM 是一个使程序和脚本有能力动态的访问和更新文档的内容、结构以及样式的平台和语言中立的接口。”
W3C DOM 被分为3个不同的姬别和部分:
    1.核心 DOM:用于结构化文档的标准模型
    2.XML DOM:用于 XML文档的标准模型
    3.·HTML DOM:用于 ·HTML文档的标准模型
DOM 定义了所有文档元素的对象和属性,以及访问他们的接口(方法)。

4.什么是 ·HTML DOM?
·HTML DOM定义了所有 HTML 元素的对象和属性,以及访问他们的接口和方法。

5.什么是 XML DOM?
XML DOM是:
·用于 XML的标准对象模型
·用于 XML的标准编程接口
·中立平台和语言
·W3C 的标准
XML DOM定义了xml元素的对象和属性,以及访问他们的方法和接口;
换句话说:
XML DOM是用于获取、更改、添加或删除XML元素的标准。


实现节点的遍历

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <h1>XML DOM实现节点的遍历</h1>
    <ul id="uid">
        <li>成龙</li>
        <li>甄子丹</li>
        <li>宋仲基</li>
        <li>赵丽颖</li>
    </ul>
</body>
<script>
    //HTML DOM获取文档中的所有li节点
    var list = document.getElementsByTagName('li');
    console.log('节点的数量为:' + list.length);

    //XML DOM获取文档中的所有节点(通过子节点获取)
    var list1 = document.getElementById('uid').childNodes;
    console.log('节点的数量为:'+list1.length);
    
    //子节点的遍历
    for(var i = 0; i<list1.length; i++){
        // console.log(list1[i].nodeType);//输出为1表示是与元素标签,输出为3表示为文本内容
        if(list1[i].nodeType == 1){//当输出为1时控制台输出
            // console.log(list1[i].innerHTML);//HTML DOM 实现文本的输出
            console.log(list1[i].firstChild.nodeValue);//XML DOM 实现文本的输出
        }
    }
</script>
</html>

实现节点的删除

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        ul,li{margin: 0px;padding: 0px;width: 100%;}
        ul li{list-style: none;background-color: #ddd;}
        ul li:hover{background-color: aqua;}
        ul li.cc{background-color: orange;}
    </style>
</head>
<body>
    <h1>节点的删除</h1>
    <ul id="uid">
        <li>成龙</li>
        <li>甄子丹</li>
        <li>李连杰</li>
        <li>王思聪</li>
        <li>成龙</li>
        <li>甄子丹</li>
        <li>李连杰</li>
        <li>王思聪</li>
    </ul>
    <button onclick="doDel()">删除</button>
</body>
<script>
    //获取所有的li节点 并 绑定点击事件
    var list = document.getElementById('uid').getElementsByTagName('li');
    for(var i = 0; i<list.length; i++){
        list[i].onclick = function(){
            this.setAttribute('class','cc');
        }
    }
    //删除节点函数
    function doDel(){
        //获取当下的所有li节点
        var list1 = document.getElementById('uid').getElementsByTagName('li');

        for(var i = 0; i<list1.length; i++){
            //判断节点是否被点击
            if(list1[i].getAttribute('class') == 'cc'){
                list1[i].parentNode.removeChild(list1[i]);
                i--;//为防止删除list导致索引的变化,所以每次删除完之后将i减小1实现无遗漏。
            }
        }
    }
</script>
</html>

属性的操作

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <h1>XML DOM 属性操作</h1>
    <a href="http://www.baidu.com" id="aid"></a>
</body>
<script>
    //获取上方的超链接
    var aid = document.getElementById('aid');
    //通过已知的HTML DOM操作实现对属性的基本操作
    console.log(aid.href);
    aid.title = '百度链接';
    //aid.aa = 'b';  为aid添加aa属性不可
    
    //使用XML DOM的方法为aid添加aa属性
    aid.setAttribute('aa','b');
    console.log(aid.getAttribute('aa'));//b
    //XML DOM提供了setAttribute 和 getAttribute方法实现对属性的操作
</script>
</html>

创建节点

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        ul{list-style: none;}
        ul li{line-height: 30px;width: 100px;background-color: #ddd;margin-top: 2px;}
    </style>
</head>
<body>
    <h1>XML DOM 创建节点</h1>
    <ul id="uid">
        <li>成龙</li>
        <li>李连杰</li>
        <li>王思聪</li>
        <li>甄子丹</li>
    </ul>
    名称:<input type="text" id="iid" name="name" size="10">
    <button onclick="doAdd()">添加</button>
</body>
<script>
    function doAdd(){
        //获取输入框的内容
        var name = document.getElementById('iid').value;
        //获取ul节点
        var ul = document.getElementById('uid');
        //创建文本对象
        var tt = document.createTextNode(name);
        //创建一个li节点对象
        var li = document.createElement('li');
        //将文本对象添加到li节点中
        li.appendChild(tt);
        //将li节点添加到ul节点中
        //ul.appendChild(li);//后追加
        ul.insertBefore(li, ul.firstChild);//前追加
    }
</script>
</html>

节点的复制

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        #did{width: 400px; height: 300px; border: 1px solid blue;}
        img{width: 80px; border: 2px solid white;}
        img:hover{border: 2px solid red;}
    </style>
</head>
<body>
    <h1>XML DOM 节点的复制</h1>
    <div id="did"></div>
    <div id="mid">
        <img src="./11.jpg">
        <img src="./22.jpg">
        <img src="./33.jpg">
        <img src="./44.jpg">
    </div>
</body>
<script>
    //获取所有的图片
    var ilist = document.getElementById('mid').getElementsByTagName('img');
    //遍历 为每一个图片对象绑定双击事件
    for(var i = 0; i<ilist.length; i++){
        ilist[i].ondblclick = function(){
            //获取did节点
            var did = document.getElementById('did');
            //克隆一份图片节点,并添加到did节点中
            did.appendChild(this.cloneNode());
        }
    }
</script>
</html>

节点的替换

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        #did{width: 400px;height: 300px; border: 1px solid blue;}
        #did img{width: 400px;}
        #mid img{width: 80px; margin: 2px; border: 2px solid white;}
        #mid img:hover{border: 2px solid red;}
    </style>
</head>
<body>
    <h1>XML DOM 节点的替换</h1>
    <div id="did"><img src="./11.jpg"></div>
    <div id="mid">
        <img src="./11.jpg">
        <img src="./22.jpg">
        <img src="./33.jpg">
        <img src="./44.jpg">
    </div>
</body>
<script>
    //获取did节点下的img图片
    var did = document.getElementById('did');
    //获取mid节点下的所有img图片
    var mlist = document.getElementById('mid').getElementsByTagName('img');
    //遍历为每一个mlist中的img对象添上双击事件
    for(var i = 0; i<mlist.length; i++){
        mlist[i].ondblclick = function(){
            did.replaceChild(this.cloneNode(),did.firstChild);//子节点替换
        }
    }

</script>
</html>

select对象

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        select{width: 100px;height: 200px;border: 1px solid #ddd;float: left;}
        div{width: 100px;height: 200px;float: left;text-align: center;padding: 50px;}
    </style>
</head>
<body>
    <h1>javascript语言 XML DOM操作--select对象</h1>
    <select id="sid1" size="10" multiple>
        <option value="0">张三</option> 
        <option value="1">李四</option>
        <option value="2">王二</option>
        <option value="3">麻子</option>
        <option value="4">成龙</option>
        <option value="5">甄子丹</option>
        <option value="6">王思聪</option>
        <option value="7">李连杰</option>
    </select>
    <div>
        <button onclick="doMove('sid1','sid2')">>></button>
        <br><br><br><br>
        <button onclick="doMove('sid2','sid1')"><<</button>
    </div>
    <select id="sid2" size="10" multiple></select>
</body>
<script>
    function doMove(d1, d2){
        //获取两个现实框节点对象
        var select1 = document.getElementById(d1);
        var select2 = document.getElementById(d2);

        //获取select1下的所有option节点
        var list = document.getElementsByTagName('option');
        for(var i = 0; i<list.length; i++){
            if(list[i].selected){//判断是否被选中
                list[i].selected = false;
                select2.appendChild(list[i]);//这一步实现了将select1中的元素追加到了select2中。
                i--;//防止产生漏移
            }
        }
    }
</script>
</html>

table对象

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <h1>JavaScript语言中XML DOM 操作-table对象</h1>
    <table id="tid" width="500px" border="1px">
        <thead>
            <tr>
                <th>姓名</th>
                <th>学号</th>
                <th>性别</th>
                <th>年龄</th>
                <th>删除</th>
            </tr>
        </thead>
        <tbody>
            <tr>
                <td>张三</td>
                <td>0</td>
                <td></td>
                <td>17</td>
                <td><button onclick="doDel(this)">删除</button</td>
            </tr>
            <tr>
                <td>李四</td>
                <td>1</td>
                <td></td>
                <td>18</td>
                <td><button onclick="doDel(this)">删除</button</td>
            </tr>
            <tr>
                <td>小美</td>
                <td>2</td>
                <td></td>
                <td>17</td>
                <td><button onclick="doDel(this)">删除</button></td>
            </tr>
        </tbody>
    </table>
    <br><br><br>
    <h2>添加学生信息</h2>
    <form action="#" name="myform" onsubmit="return doAdd()">
        姓名:<input type="text" name="name"><br><br>
        学号:<input type="text" name="sno"><br><br>
        性别:<input type="text" name="sex"><br><br>
        年龄:<input type="text" name="age"><br><br>
        <input type="submit" value="添加"/>
    </form>
</body>
<script>
    function doDel(bt){
        bt.parentNode.parentNode.parentNode.removeChild(bt.parentNode.parentNode);
    }
    function doAdd(){
        //获取表单数据
        var data = new Array();
        data[0] = document.myform.name.value;
        data[1] = document.myform.sno.value;
        data[2] = document.myform.sex.value;
        data[3] = document.myform.age.value;
        //获取表格节点对象
        var tb = document.getElementsByTagName('tbody')[0];
        // 创建表格tr节点
        var tr = document.createElement('tr');
        //遍历data将表单的输入数据传入tr表单节点中
        for(var i = 0; i<data.length; i++){
            //创建td表格节点
            var td = document.createElement('td');
            //创建文本对像
            var text = document.createTextNode(data[i]);
            td.appendChild(text); 
            tr.appendChild(td);
        }
        //添加删除按钮
        var td = document.createElement('td');
        td.innerHTML = '<button οnclick="doDel(this)">删除</button>';
        tr.appendChild(td);
        //将tr添加到tb中
        tb.appendChild(tr);

        //清空表单
        document.myform.reset();

        return false;
    }
</script>
</html>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值