javaWeb(四)----- DOM

简介: javaWeb(四)----- DOM

 DOM的简单学习

✔  功能:控制html文档的内容

✔  获取页面标签(元素)对象Element:document.getElementById("id值") ; ---  通过元素的id获取元素对象

✔  操作Element对象:

(1) 修改属性值

        ①  明确获取的对象是哪一个?

        ②  查看API文档,找其中有哪些属性可以设置

(2)修改标签体内容:属性 innerHTML

        ①  获取元素对象

        ②  使用innerHTML属性修改标签体内容

DOM

✔  概念: Document Object Model 文档对象模型

    DOM将标记语言文档的各个组成部分封装为对象,可以使用这些对象对标记语言文档进行CRUD的动态操作

✔  W3C DOM 标准被分为 3 个不同的部分:

(1)核心 DOM - 针对任何结构化文档的标准模型

       * Document:文档对象

       * Element:元素对象

       * Attribute:属性对象

       * Text:文本对象

       * Comment:注释对象

       * Node:节点对象,其他5个的父对象

(2)XML DOM - 针对 XML 文档的标准模型

(3)HTML DOM - 针对 HTML 文档的标准模型

✔  核心DOM模型:

(1)Document:文档对象

        ☛  创建(获取):在html dom模型中可以使用window对象来获取

             ①  window.document

             ②  document

        ☛  方法:

             ①  获取Element对象:

                  getElementById() ---  根据id属性值获取元素对象。id属性值一般唯一

                  getElementsByTagName() ---  根据元素名称获取元素对象们。返回值是一个数组

                  getElementsByClassName() ---  根据Class属性值获取元素对象们。返回值是一个数组

                  getElementsByName() ---  根据name属性值获取元素对象们。返回值是一个数组

             ②  创建其他DOM对象:

                  createAttribute(name)

                  createComment()

                  createElement()

                  createTextNode()

        ☛  属性

(2)Element:元素对象

        ☛  创建(获取):通过document来获取和创建

        ☛  方法:

                    removeAttribute() ---  删除属性

                    setAttribute() ---  设置属性

(3)Node:节点对象,其他5个的父对象

        ☛  特点:所有dom对象都可以被认为是一个节点

        ☛  方法:

             ①  CRUD dom树:

                   appendChild() ---  向节点的子节点列表的结尾添加新的子节点

                   removeChild() ---  删除(并返回)当前节点的指定子节点

                   replaceChild() ---  用新节点替换一个子节点。

        ☛  属性:parentNode 返回节点的父节点

▶ 案例:动态表格

<!DOCTYPE html>
<html lang="ch">
<head>
    <meta charset="UTF-8">
    <title>动态表格</title>
    <style>
        table{
            border: 1px solid;
            margin: auto;
            width: 500px;
        }
        td{
            text-align: center;
            border: 1px solid;
        }
        div{
            text-align: center;
            margin: 50px;
        }
    </style>
</head>
<body>
<div>
    <input type="text" id="num" placeholder="输入编号">
    <input type="text" id="name" placeholder=输入姓名">
    <input type="text" id="gender" placeholder="输入性别">
    <input type="button" id="btn" value="增加">
</div>
<table>
   <caption>学生信息表</caption>
    <tr>
        <td>编号</td>
        <td>姓名</td>
        <td>性别</td>
        <td>操作</td>
    </tr>
    <tr>
        <td>1</td>
        <td>陈阿花</td>
        <td>女</td>
        <td><a href="javascript:void(0);" onclick="delTr(this)">删除</a></td>
    </tr>
    <tr>
        <td>2</td>
        <td>池小强</td>
        <td>男</td>
        <td><a href="javascript:void(0);" onclick="delTr(this)">删除</a></td>
    </tr>
   <tr>
       <td>3</td>
       <td>张大华</td>
       <td>女</td>
       <td><a href="javascript:void(0);" onclick="delTr(this)">删除</a></td>
   </tr>
</table>
<script>
    /*
      分析:
      1.添加:
        ① 给添加按钮绑定单击事件
        ② 获取文本框的内容
        ③ 创建td,设置td的文本为文本框的内容
        ④ 创建tr
        ⑤ 将td添加到tr中
        ⑥ 获取table,将tr添加到table中
      2.删除
        ① 确定点击的是哪一个"删除"的超链接
        ② 怎么删除? removeChild() ---  通过父节点删除子节点
     */
    document.getElementById("btn").onclick = function(){
        // 获取文本框的内容
        var num =document.getElementById("num").value;
        var name =document.getElementById("name").value;
        var gender =document.getElementById("gender").value;
        var td_num = document.createElement("td");
        var text_id = document.createTextNode(num);
        td_num.appendChild(text_id);
        var td_name = document.createElement("td");
        var text_name = document.createTextNode(name);
        td_name.appendChild(text_name);
        var td_gender = document.createElement("td");
        var text_gender = document.createTextNode(gender);
        td_gender.appendChild(text_gender);
        var td_a = document.createElement("td");
        var ele_a = document.createElement("a");
        ele_a.setAttribute("href","javascript:void(0);");
        ele_a.setAttribute("onclick","delTr(this)");
        var text_a = document.createTextNode("删除");
        ele_a.appendChild(text_a);
        td_a.appendChild(ele_a);
        var tr = document.createElement("tr");
        tr.appendChild(td_num);
        tr.appendChild(td_name);
        tr.appendChild(td_gender);
        tr.appendChild(td_a);
        var table = document.getElementsByTagName("table")[0];
        table.appendChild(tr);
    }
    // 删除方法
    function delTr(obj) {
        var table = obj.parentNode.parentNode.parentNode;
        var tr = obj.parentNode.parentNode ;
        table.removeChild(tr) ;
    }
</script>
</body>
</html>

image.gif

✔  HTML DOM

(1)标签体的设置和获取:innerHTML

也可以用 innerHTML 来实现动态表格添加一行,只需要将上面代码中 script 标签体中的部分内容做如下修改即可实现一样的功能。

<script>
    /*
      分析:
      1.添加:
        ① 给添加按钮绑定单击事件
        ② 获取文本框的内容
        ③ 创建td,设置td的文本为文本框的内容
        ④ 创建tr
        ⑤ 将td添加到tr中
        ⑥ 获取table,将tr添加到table中
      2.删除
        ① 确定点击的是哪一个"删除"的超链接
        ② 怎么删除? removeChild() ---  通过父节点删除子节点
     */
    // 使用innerHTML添加一行(这个方法添加不是面向对象的)
    document.getElementById("btn").onclick = function(){
        var num =document.getElementById("num").value;
        var name =document.getElementById("name").value;
        var gender =document.getElementById("gender").value;
        var table = document.getElementsByTagName("table")[0];
        table.innerHTML += "<tr>\n" +
            "<td>"+num+"</td>\n" +
            "<td>"+name+"</td>\n" +
            "<td>"+gender+"</td>\n" +
            "<td><a href=\"javascript:void(0);\" onclick=\"delTr(this);\" >删除</a></td>\n" +
            "</tr>";
    }
    // 删除方法
    function delTr(obj) {
        var table = obj.parentNode.parentNode.parentNode;
        var tr = obj.parentNode.parentNode ;
        table.removeChild(tr) ;
    }
</script>

image.gif

(2)使用html元素对象的属性

(3)控制元素样式

        ①  使用元素的style属性来设置

           如:

                 div1.style.border = "1px solid red";

                 div1.style.width = "200px";

                 //font-size--> fontSize

                 div1.style.fontSize = "20px";

         ②   提前定义好类选择器的样式,通过元素的className属性来设置其class属性值。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>样式控制</title>
    <style>
        .d1{
            border: 1px solid red;
            width: 100px;
            height: 100px;
        }
        .d2{
            border: 1px solid blue;
            width: 200px;
            height: 200px;
        }
    </style>
</head>
<body>
    <div id="div1">
        div1
    </div>
    <div id="div2">
        div2
    </div>
    <script>
        var div1 = document.getElementById("div1");
        div1.onclick = function() {
            // 样式1
            div1.style.border = "1px solid red" ;
            div1.style.width = "200px";
            div1.style.fontSize = "20px";
        }
        var div2 = document.getElementById("div2");
        div2.onclick = function() {
            // 样式2
            div2.className = "d2" ;
        }
    </script>
</body>
</html>

image.gif


相关文章
|
4月前
|
XML JavaScript 前端开发
Javaweb之javascript的DOM对象的详细解析
1.5.3 DOM对象 1.5.3.1 DOM介绍 DOM:Document Object Model 文档对象模型。也就是 JavaScript 将 HTML 文档的各个组成部分封装为对象。
44 0
|
7月前
|
XML JavaScript 前端开发
JavaWeb 速通DOM
JavaWeb——JS内容补充 DOM的原理和使用。
47 0
|
7月前
|
XML JavaScript 前端开发
【JavaWeb】知识总结Ⅳ(JavaScript中的DOM)
JavaScript 能改变页面中的所有 HTML 元素 JavaScript 能改变页面中的所有 HTML 属性 JavaScript 能改变页面中的所有 CSS 样式 JavaScript 能删除已有的 HTML 元素和属性 JavaScript 能添加新的 HTML 元素和属性 JavaScript 能对页面中所有已有的 HTML 事件作出反应 JavaScript 能在页面中创建新的 HTML 事件
|
29天前
|
JavaScript 前端开发
JavaScript操作DOM元素
JavaScript操作DOM元素
11 1
|
1月前
|
JavaScript 前端开发
如何使用 JavaScript 操作 DOM?
如何使用 JavaScript 操作 DOM?
13 0
|
4月前
|
JavaScript 前端开发
JavaScript DOM 操作:什么是事件委托(Event Delegation)?有什么优势?
JavaScript DOM 操作:什么是事件委托(Event Delegation)?有什么优势?
55 1
|
4月前
|
JavaScript 前端开发 安全
JavaScript DOM 操作:解释一下 `innerHTML` 和 `textContent` 的区别。
JavaScript DOM 操作:解释一下 `innerHTML` 和 `textContent` 的区别。
42 1
|
4天前
|
存储 JavaScript 前端开发
JavaScript DOM 操作:解释一下 cookie、sessionStorage 和 localStorage 的区别。
Cookie是服务器发送至客户端的文本信息,会随每个请求发送回服务器,适合控制会话状态但可能暴露隐私。SessionStorage仅在当前会话中存储数据,关闭浏览器后清除,适合临时存储如登录状态。LocalStorage则持久保存数据,即使关闭浏览器也不会清除,适用于存储长期设置。三种方式各有侧重,应按需求选择。
10 0
|
4天前
|
JavaScript 前端开发 安全
JavaScript DOM 操作:解释一下浏览器的同源策略。
**同源策略**是浏览器安全基石,它阻止脚本跨不同协议、域名或端口访问资源,防止恶意行为。例如,HTTP页面无法直接用JS获取HTTPS页面内容。**CORS**允许跨域请求,但需服务器配合设置,通过`document.domain`属性可配置,但仍受限于服务器配置。
10 4
|
18天前
|
JavaScript 前端开发
深入了解 JavaScript 中的 DOM 和 BOM
深入了解 JavaScript 中的 DOM 和 BOM
17 4