JavaScript之操作DOM对象 添加节点 删除节点 替换节点 父节点 子节点

DOM

  1. HTML DOM
     当网页被加载时,浏览器会创建页面的文档对象模型(Document Object Model);
     文档:DOM的D
     如果没有ducument文档,DOM就无从谈起。当创建了一个网页并把它加载到web浏览器中,DOM就悄然而生,它会根据你的网页文档创建一个文档对象。
     对象:DOM的O
     JavaScript中的对象分为三种,用户自定义对象,内在对象(如:Array,Math等),宿主对象(由浏览器提供的对象,最基础的就是window对象)。
     模型:DOM的M
     代表某种事物的表现形式。
     DOM把文档分为一棵树(节点树)。
     如下图:

在这里插入图片描述
2. DOM操作HTML
 2.1 JavaScript 能够改变页面中的所有HTML元素;
 2.2 JavaScript 能够改变页面中的所有HTML属性;
 2.3 JavaScript 能够改变页面中的所有CSS样式;
 2.4 JavaScript 能够对页面中的所有事件作出反应;
3. DOM主要是围绕元素节点和属性节点的增删改查。
  3.1
  在对DOM进行增删改查之前,首先要找到对应的元素:

<script>
	getElementByID();//通过属性id查到节点,单个节点
	getElementByTagName()//通过标签查找数组 得到节点数组
	getElementByName()//通过name属性得到节点数组
	childNodes();//获取子节点列表 NodeList
	firstChild();//获取第一个子节点
	lastChild();//获取最后一个子节点
	parentNode();//返回父节点
	ownerDocument();//返回祖先节点 整个document
	previousSibling();//返回前一个节点 如果没有则返回null
	nextSibling();//返回后一个节点
</script>

3.2

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>DOM</title>
</head>
<body>
    <p name="pname">Hello</p>
    <p name="pname">Hello</p>
    <p name="pname">Hello</p>
    <p name="pname">Hello</p>
    <div id="div">
        <p id="pid">div的p元素</p>
        <a id="aid" title="得到了a标签的属性">hello</a>
 	    <a id="aid2">aid2</a>
    </div>
    <ul>
        <li>  1</li>
        <li>  2</li>
        <li>  3</li>
        <li>  4</li>
        <li>  5</li>
    </ul>
    <script>
        function createNode() {
            var body = document.body;
            var input = document.createElement("input");
            input.type = "button";
            input.value = "创建元素的按钮";
            //将添加的节点 添加至body 子节点
            body.appendChild(input);
        }

        function addNode() {
            var div = document.getElementById("div");
            var node = document.getElementById("pid");
            var newNode = document.createElement("p");
            newNode.innerHTML = "动态添加一个p元素";
            //动态添加一个p元素 将p元素添加到 node 节点之前
            div.insertBefore(newNode,node);
        }
       
    </script>
</body>
</html>

3.3

<script>
	function removeChild() {
            var div = document.getElementById("div");
            //要删除div的子节点 p节点是div的第一个子节点 第0个子节点是空项
            var p = div.removeChild(div.childNodes[1]);
        }
</script>

3.4

<script>
	function setAttr() {
            var node = document.getElementById("aid2");
            node.setAttribute("title","动态设置a的title属性");
            var attr = node.getAttribute("title");
            alert(attr);
        }
        function getName() {
            var count1 = document.getElementsByTagName("p");//类似于name 属性
            var count = document.getElementsByName("pname");
            alert(count.length);//4
            var p = count[0];
            p.innerHTML = "world";//第一个元素 被修改成world
        }
        
</script>
  1. 获得父节点
<script>
function getParentNode() {
            var p = document.getElementById("pid");
            alert(p);//[object HTMLParagraphElement]
            alert(p.parentNode.nodeName);//DIV  获得父节点的标签名
}
</script>
  1. 获得子节点
<script>
function getChildNode() {
            var childNode = document.getElementsByTagName("ul")[0].childNodes;
            alert(childNode.length);// 11 因为ul和li后面都有空白项 总共6个 加上li标签 总共11个
            //nodeType 返回1表示元素节点 返回2表示属性节点
            alert(childNode[1].nodeType);//1
 }
 </script>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值