js—DOM操作

1.dom操作1

/*

javaScript主要分为:

1.ECMAScript:包含js中的基本语法、变量、数据类型、程序结构、函数、对象

2.Dom:文档对象模型

获取节点对象,可以操作(增删查改)节点,主要是节点的样式和内容

3.Bom:浏览器对象模型

对浏览器进行设置,宽、高、位置、边框等

*/

<!--

dom可以操作页面的每个节点

文当中的每一个元素都可以看成一个节点

节点划分:

一、根节点:html

二、元素节点:head、body

三、属性节点:如class style id

四、文本节点:如hello world!

-->

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Dom操作</title>
    <style type="text/css">
        .first{
            width: 100px;
            height: 100px;
            border: 1px solid black;
        }
    </style>
    <script type="text/javascript">
        /*
            javaScript主要分为:
            1.ECMAScript:包含js中的基本语法、变量、数据类型、程序结构、函数、对象
            2.Dom:文档对象模型
            获取节点对象,可以操作(增删查改)节点,主要是节点的样式和内容
            3.Bom:浏览器对象模型
            对浏览器进行设置,宽、高、位置、边框等
        */ 
    </script>
</head>
<body>
    
    <!-- 
        dom可以操作页面的每个节点
        文当中的每一个元素都可以看成一个节点
        节点划分:
        一、根节点:html
        二、元素节点:head、body
        三、属性节点:如class style id
        四、文本节点:如hello world!
     -->
     <div class="first" id="one">
        hello world!
     </div>
     <div class="first">

     </div>
     <div class="second">

     </div><br>
     <input type="text" name="username">
     <br>
     <br>
     <input type="text" name="psw">
     <div name="username">

     </div>
     <script type="text/javascript">
        // 1.通过属性ID获取一个对象
        var div=document.getElementById("one");
        console.log(div);
        // 2.通过标记获取页面上所有的元素对象
        var list=document.getElementsByTagName("div");
        //返回一个集合
        console.log(list);
        // 查看所有元素
        for(var index in list){
            console.log(list[index]);
        }
        // 3.通过选择器,获取指定的元素对象
        // 通过id来获取元素对象
        var div1=document.querySelector("#one");//每次只会获取第一个元素
        console.log(div1);
        // 通过类选择器查找元素
        var div2=document.querySelector(".first");
        console.log(div2);
        // 通过标签选择器查找元素
        var div3=document.querySelector("div");
        console.log(div3);
        // 4.通过class选择器,返回所有的集合对象
        list=document.getElementsByClassName("first");
        console.log(list);
        // 5.通过name属性获取集合对象
        list=document.getElementsByName("username");
        console.log(list);

    </script>
</body>
</html>

2.dom节点操作

/*

Dom节点操作:通过当前节点获取子节点、父节点、兄弟节点

节点的类型:元素节点,文本节点,属性节点,注释节点

获取节点:

1.通过id、类、标签、选择器、name获取

2.通过节点获取相关联的节点

*/

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Dom节点</title>
</head>

<body>
    <ul>
        <li>三国演义</li>
        <li>红楼梦</li>
        <li>西游记</li>
        <li>水浒传</li>

    </ul>
    <div>
        asa
    </div>
</body>
<script type="text/javascript">
    // 1.获取ul节点
    var ul = document.querySelector("ul");
    // 查看节点的类型
    var type = ul.nodeType;//节点类型
    var nodeName = ul.nodeName;//节点的名字
    var value = ul.nodeValue;//节点的值
    console.log(type);
    console.log(nodeName);
    console.log(value);
    // 2.获取子节点  返回一个集合
    var nodes = ul.childNodes;
    console.log(nodes);
    for (var i = 0; i < nodes.length; i++) {
        var tmp = nodes[i];
        console.log(tmp.nodeType);
        console.log(tmp.nodeName);
        console.log(tmp.nodeValue);
    }
    // 获取元素节点
    nodes = ul.children;
    console.log(nodes);
    for (var i = 0; i < nodes.length; i++) {
        var tmp = nodes[i].childNodes[0];
        console.log(tmp.nodeType);
        console.log(tmp.nodeName);
        console.log(tmp.nodeValue);
    }
    // 获取ul下的第一个节点
    var firstNode = ul.firstChild;
    console.log(firstNode);
    // 获取ul下第一个元素节点
    var firstElementNode = ul.firstElementChild;
    console.log(firstElementNode);
    // 获取最后一个节点
    var last = ul.lastChild;
    console.log(last);
    // 获取最后一个元素节点
    last = ul.lastElementChild;
    console.log(last);
    // 获取兄弟(下一个)元素
    var nextNode = firstElementNode.nextElementSibling;
    console.log(nextNode);
    // 上一个节点元素
    var preNode = nextNode.previousElementSibling;
    console.log(preNode);
    // 获取当前节点的父节点
    var parentNode = preNode.parentElement;
    console.log(parentNode);
    
</script>

</html>

 3.节点操作(增删查改)

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>节点操作(增删查改)</title>
    <style type="text/css">
    
    </style>
</head>

<body>
    <div>
        <input type="text" name="user" id="first">
    </div>
    <input type="button" value="追加" onclick="toAdd()">
    <input type="button" value="插入" onclick="toInsert()">
    <input type="button" value="替换" onclick="toReplace()">
    <input type="button" value="删除" onclick="toDelete()">
    <div>
         <input type="button" value="属性" onclick="toAttri()">
    </div>
</body>
<script type="text/javascript">
    // 动态添加一个元素
    function toAdd() {
        // 1.找到节点元素
        var div = document.querySelector("div");
        // 2.创建一个元素节点
        var input = document.createElement("input");
        // 3.节点元素追加到div中(在后面追加)
        div.appendChild(input);
    }
    // 动态插入一个元素
    function toInsert() {
        // 1.创建一个元素
        var span = document.createElement("span");
        // 2.给标签设置内容
        span.innerHTML = "我是qq";
        // 3.插入元素
        // 3.1找到父节点元素
        var div = document.querySelector("div");
        // 3.2找到要在哪个元素之前添加节点,最后一个之前
        var last = div.lastElementChild;
        div.insertBefore(span, last);
    }
    // 动态替换一个元素
    function toReplace() {
        // 1.创建一个节点元素
        var newSpan = document.createElement("span");
        newSpan.innerHTML = "Hello!";
        // 2.找到要替换的元素
        var first = document.querySelector("input");
        // 3.替换子节点元素
        var div = document.querySelector("div");
        // 替换元素、被替换元素
        div.replaceChild(newSpan, first);
    }
    // 删除指定节点元素
    function toDelete() {
        // 1.找到要删除的节点
        var delElement = document.querySelector("sapn");
        // 2.删除指定节点
        var div = document.querySelector("div");
        div.removeChild(delElement);
    } 
    // 属性节点  对属性进行操作
    function toAttri(){
        // 1.获取要操作的元素节点
        var input=document.querySelector("#first");
        // 2.设置属性(key、value)
        input.setAttribute("value","你好!");
        // 3.修改属性的值
        input.setAttribute("value","Hello!");
        // 4.设置属性的样式
        input.setAttribute("style","color:blue");
        // 5.更改样式
        input.style.backgroundColor="yellow";
        input.style.borderRadius="10px";
        // 6.删除属性
        input.removeAttribute("value");
        
    }  
</script>

</html>

4.copy节点

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>copy节点</title>
    <style type="text/css">
        * {
            padding: 0;
            margin: 0;
        }
        div {
            width: 300px;
        }
        .first,.second,.third{
            width: 300px;
        }
        .second{
            height: 100px;
            background: green;
        }
        .third{
            height: 200px;
            background: rebeccapurple;
        }
    </style>
</head>

<body>
    <div class="first">
        <div class="second">
            <ul>
                <li>三国演义</li>
            </ul>
        </div>
        <div class="third">
            <ul>
                <li>水浒传</li>
            </ul>
        </div>
    </div>
    是否深度复制?<input type="radio" name="isdeep" value="yes"> 是
    <input type="radio" name="isdeep" value="no"> 否
    <input type="button" value="复制" onclick="toClone()">
</body>
<script type="text/javascript">
    // 克隆节点元素
    function toClone(){
        // 查找选项
        // 获取节点通过name
        var list=document.getElementsByName("isdeep");
        var isdeep=false;
        if(list[0].checked){
            isdeep=true;
        }
        // 1.找到要克隆的节点元素
        var el=document.querySelector(".second");
        // 2.克隆出一个新的元素节点  true;深度复制,可以赋值子节点
        var newEl=el.cloneNode(isdeep);
        // 找到要放的位置
        var desEl=el.parentElement;
        // 4.追加节点
        desEl.appendChild(newEl);
        
    }
</script>
</html>

5.自定义对象

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>自定义对象</title>
</head>
<body>
    <script type="text/javascript">
        // 创建一个自定义对象  通过object
        var obj=new Object();
        // 给属性进行赋值
        obj.name="尊";
        obj.age=12;
        obj.add="葬剑山庄";
        // 对对象进行取值
        console.log(obj.name+"  "+obj.age+"  "+obj.add);
        // 给对象定义函数
        obj.study=function(){
            console.log("好好学习,天天向上!");
        }
        // 调用函数
        obj.study();
        // 通过构造函数创建一个对象
        function Worker(id,name,age){//定义对象
            this.id=id;
            this.name=name;
            this.age=age;
        }
        // 创建对象
        var w=new Worker('1',"qq",21);
        console.log(w.id+"  "+w.name+"  "+w.age);
    </script>
</body>
</html>

6.table操作

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>table操作</title>
    <style type="text/css">
        table{
            border: 1px solid;
            border-spacing: 0;
            width: 400px;
            margin-left: auto;
            margin-right: auto;
        }
        td{
            border:1px solid;
            border-collapse: collapse;
        }
    </style>
</head>

<body>
    <table>
        <caption>标题文档</caption>
        <tr>
            <td>张三</td>
            <td>王二</td>
            <td>李四</td>
        </tr>
        <tr>
            <td>张三</td>
            <td>王二</td>
            <td>李四</td>
        </tr>
        <tr>
            <td>张三</td>
            <td>王二</td>
            <td>李四</td>
        </tr>
    </table>
</body>
<script type="text/javascript">
    // 获取table
    var tb=document.querySelector("table");
    // 获取所有行  返回一个集合对象
    var rows=tb.rows;
    console.log(rows);
    console.log(tb.rows.length);

    // 获取其中一行总共多少列  返回一个集合
    var cols=rows[0].cells;
    console.log(cols);
    // 给第一行 第一列设置背景颜色
    var cell=tb.rows[0].cells[0];
    cell.style.backgroundColor="green";
    // 更改文本为一个图片
    cell.innerText="<img src='2.png'>"//文本识别
    // cell.innerHTML="<img src='2.png'>"//可以识别为html
    // 想表各种新增一行  0位置
    var tr=tb.insertRow(0);
    // 新增列
    var cell=tr.insertCell(0);
    // cell 设置文本内容
    cell.innerText="打撒";
    cell=tr.insertCell(1);
    cell.innerText="的司法程序";
    cell=tr.insertCell(2);
    cell.innerText="cxcsd";
    // 删除一行
    // tb.deleteRow(0);
    // 删除表格的最后一行
    // tb.deleteRow(tb.rows.length-1);
    // 删除指定的某一列
    tr.deleteCell(0);
</script>
</html>

7.计时器

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>计时器</title>
</head>

<body>
    <div>
        当前系统时间
    </div>
    <input type="button" value="启动" onclick="start()">
    <input type="button" value="停止" onclick="stop()">
</body>
<script type="text/javascript">
    // 设置启动定时器
    // var timer=setImmediate(执行函数,间隔的时间);
    function updatetime() {
        var date = new Date();
        // 获取年
        var year = date.getFullYear();
        var month = date.getMonth();
        var day = date.getDate();
        var h = date.getHours();
        var m = date.getMinutes();
        var s = date.getSeconds();
        // 拼接字符串
        var str = year + " 年" + (month+1) + " 月" + day + " 日" + h + ":" + m + ":" + s;
        var div = document.querySelector("div");
        div.innerText = "当前系统时间是:" + str;
    }
    // 启动定时器
    var timer=setInterval(updatetime,1000);
    var timer;
    // 清空定时器
    // clearImmediate(timer);
    function start() {
        // 启动定时器
        if (timer == undefined) {
            timer = setInterval(updatetime, 1000);
        }
    }
    function stop() {
        if (timer != undefined) {
            clearInterval(timer);
            timer = undefined;
        }
    }
    // 延迟多少s执行一个函数
    // setTimeout(openUrl,5000);
    // function openUrl(){
    //     // 打开连接
    //     window.location.href="http://www.runoob.com/js/js-htmldom-collections.html";
    // }
    // 清空延时
    // clearImmediate(timer);


</script>

</html>

猜你喜欢

转载自blog.csdn.net/qq_41534115/article/details/82594461