HTML DOM 简介

HTML DOM

HTML DOM 定义了访问和操作 HTML 文档的标准。

DOM → \to Document Object Model

  • HTML 的标准对象模型
  • HTML 的标准编程接口
  • W3C 标准

节点概念

将HTML的所有事物视为树的节点,将一个HTML文档视为一棵树

  • 整个文档是一个文档节点
  • 每个 HTML 元素是元素节点
  • HTML 元素内的文本是文本节点
  • 每个 HTML 属性是属性节点
  • 注释是注释节点
    对于下面文档,可分解为如下一棵树
<html>
<head>
    <title>标题</title>
</head>
<body>
    <h1>题目</h1>
    <a href="www.baidu.com">链接</a>
</body>
</html>

在这里插入图片描述

DOM 属性、方法

通过 HTML DOM,树中的所有节点均可通过 JavaScript 进行访问。所有 HTML 元素(节点)均可被修改,也可以创建或删除节点。javascript的编程接口则是对象方法和对象属性。

  • 方法是您能够执行的动作(比如添加或修改元素)。
  • 属性是您能够获取或设置的值(比如节点的名称或内容)。

访问 HTML 元素

通过id,标签名,类名的方式,获取指定节点

getElementById()方法

语法

node.getElementByld("id");

返回带有指定id的元素。

<p id="hw">hello world</p>
<script>
x=document.getElementById("hw"); //x通过id获取了所需节点
document.write("<p> 来自 hw 段落文本"+x.innerHTML+"<\p>")
</script>

效果 ↓ \downarrow

在这里插入图片描述

getElementsByTagName()方法

语法

node.getElementsByTagName("tagname");

返回带有指定标签名的所有元素,返回值为数组。

getElementsByClassName()方法

语法

node.getElementsByClassName("classname");

与上两类类似

修改/创建 HTML 元素

  • 改变 HTML 内容
  • 改变 CSS 样式
  • 改变 HTML 属性
  • 创建新的 HTML 元素
  • 删除已有的 HTML 元素
  • 改变事件(处理程序)

修改HTML内容

使用 innerHTML属性

node.innerHTML=new_content
<p id="id1">content that will be changed<p>
<script>
document.getElementById("id1").innerHTML="new content";
</script>

修改HTML样式

应用各自属性,直接修改

<p id="id1">paragraph1<p>
<p id="id2">paragraph2<p>
<script>
document.getElementById("id2").style.color="blue";
document.getElementById("id2").style.fontFamily="Arial";
document.getElementById("id2").style.fontSize="larger";
</script>

在这里插入图片描述

创建新的 HTML 元素

appendChild()函数添加元素,将新元素作为加入部分的最后一个子元素

<div id="div1">
    <p> add a new paragraph below.</p>
</div>
<script>
var para=document.createElement("p");
var Cont=document.createTextNode("The new paragraph.");
para.appendChild(Cont);

var element=document.getElementById("div1");
element.appendChild(para);
</script>

在这里插入图片描述

insertBefore()函数在指定元素前添加元素

<div id="div1">
    <p id="paraold"> add a new paragraph above.</p>
</div>
<script>
var para=document.createElement("p");
var Cont=document.createTextNode("The new paragraph.");
para.appendChild(Cont);

var element=document.getElementById("div1");
var para1=document.getElementById("paraold");
element.insertBefore(para,para1);
</script>

效果图

删除已有元素

removeChild()函数删除父节点下的指定子节点

<div id="div1">
    <p id="p1">para1</p>
    <p id="p2">pare2</p>
</div>
<script>
var elem1=document.getElementById("div1");
var para1=document.getElementById("p1");
elem1.removeChild(para1);
</script>

替换已有元素

replaceChild()函数替换子节点

<div id="div1">
    <p id="p1">para1</p>
    <p id="p2">para2</p>
</div>
<script>
var para3=document.createElement("p");
var text=document.createTextNode("a new paragraph");
para3.appendChild(text);
var elem1=document.getElementById("div1");
var para1=document.getElementById("p1");
elem1.replaceChild(para3,para1);
</script>

在这里插入图片描述

事件处理

  • 当用户点击鼠标时
  • 当鼠标移动到元素上时
  • 当输入字段被改变时
  • 当 HTML 表单被提交时

两类处理事件的方法

  • 作为属性加入HTML标签
  • 使用javascript分配事件
在html标签中加入属性
  • 一种是写在标签上的较短的函数
    <button onclick="this.innerHTML='hello world!'">文本变化按钮</button>
    
  • 作为函数写在HTML文档头部
    <head>
        <script>
        function click_button(id)
        {
            id.innerHTML="hello world!"
        }
        </script>
    </head>
    <body>
        <button onclick="click_button(this)">文本变化按钮</button>
    </body>
    
    在这里插入图片描述
    ⇓ \Downarrow
    在这里插入图片描述
使用JavaScript分配事件
<button id="click_btn">文本变化按钮</button>
<script>
document.getElementById("click_btn").onclick=function(){chg_txt_btn()};
function chg_txt_btn()
{
    document.getElementById("click_btn").innerHTML="hello world!";
}
</script>

HTML标签事件属性(部分)

属性名用途
onclick鼠标点击后
onmousedown鼠标点击时
onmouseup鼠标松开时
onload进入页面,可用于处理 cookies
onunload退出界面,可用于处理 cookies
onchange用于输入字段的验证
onmouseover当光标移动到指定标签触发函数
onmouseout当光标离开元素时触发函数

用于指示节点的节点属性

节点列表

对于getElementByTagName()此类返回值为含有多个节点元素的列表的函数,以类似数组的方式指示所需要的节点,下标从零开始

<p>paragraph 1</p>
<p>paragraph 2</p>
<p>paragraph 3</p>
<script>
para_list=document.getElementsByTagName("p");
document.write("second paragraph is "+para_list[1].innerHTML);
</script>

在这里插入图片描述

length

节点列表的length属性指示列表的长度

para_list=document.getElementsByTagName("p");
for(i=0;i<para_list.length;i++)
{
    ...
}

指示节点间父子关系的属性

parentNode, firstChild, lastChild属性分别为父节点,第一个孩子,最后一个孩子节点

<p id="first_para">hello world!</p>
<script>
x=document.getElementById("first_para");
document.write(x.firstChild.nodeValue+" again");
</script>

在这里插入图片描述

childNodes 孩子节点列表

nodeValue 节点内容

文档根节点

  • document.documentElement - 全部文档
  • document.body - 文档的主体

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值