本文主要是介绍DOM文本对象模型,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
DOM文档对象模型
DOM节点的分类
<div class="" id="">我是div</div>
// 1.Dom节点分类
// 文本节点 ==> 我是div 所有标签显示的内容
// 属性节点 ==> class id 所有标签里面的属性
// 元素节点 ==> div 所有的标签
节点的获取
document.getElementById //通过id获取
document.getElementsByClassName //通过类名获取
document.getElementsByName // 通过name获取
document.getElementsByTagName // 通过标签名获取
document.querySelector // 获取第一个
document.querySelectorAll //获取所有
document.body //获取body
节点的属性
<script>
// 元素具备的属性
// id className style
// id 获取对应的id (设置)
// className 获取对应的class名
// style 获取样式(设置)
// title 获取title属性
// innerHtml 获取显示的内容(设置,包含html内容)
// innerText 获取显示的文本(设置,不包含html内容)
</script>
<body>
<div class="box" id="innerbox" name="hz"></div>
<script>
let div = document.querySelector("div")
// 获取所有的元素节点 返回的是一个伪数组
console.log(div.attributes)
console.log(div.attributes.length)
// 通过下标获取对应的属性节点
let id = div.attributes[1]
// 通过key键值获取对应的属性节点
console.log(div.attributes["id"])
console.log(id)
// 节点的几个属性 nodeName nodeType nodeValue
console.log(id.nodeName)
console.log(id.nodeType)
console.log(id.nodeValue)
</script>
</body>
元素节点的方法
<div title="text"></div>
<input type="text" placeholder="password">
<a href="http://4399.com"></a>
<script>
let div = document.querySelector("div")
// 获取
console.log(div.getAttribute("title"))
// 移除
div.removeAttribute("title")
// 增加,修改
div.setAttribute("class","box")
div.setAttribute("id","hz")
// .语法获取自带的属性
console.log(document.querySelector("input").value)
console.log(document.querySelector("input").type)
console.log(document.querySelector("input").placeholder)
console.log(document.querySelector("a").href)
</script>
节点操作的方法
// 创建元素节点 createElement("标签名")
let new_div = document.createElement("div")
// 创建属性节点 createAttribute("class")
let cla = document.createAttribute("属性名")
// 设置属性节点
cla.value = "box"
// 创建文本节点 createTextNode("文本内容")
let text = document.createTextNode("这是一段文本")
// 给new_div设置属性 setAttributeNode
new_div.setAttributeNode(cla)
// 给new_div添加子节点
new_div.appendChild(text)
// 把new_div添加到body里面
// document.body.appendChild(new_div)
let newEle = document.createElement("div")
document.body.appendChild(newEle)
let span = document.createElement("span")
let p = document.createElement("p")
// insertBefore(新元素,旧元素)在某某之前添加
new_div.insertBefore(p,text)
// appendChild() 在后面追加
new_div.appendChild(span)
document.body.appendChild(new_div)
// 全部移除 remove()
newEle.remove()
// 移除对应的子节点 removeChild)
new_div.removeChild(p)
// 替换对应的子节点 replaceChild(元素,要替换的元素)
new_div.replaceChild(p,span)
// 全部替换 replaceChildren()
new_div.replaceChildren("a")
this指向
<body>
<button>1</button>
<button>2</button>
<button>3</button>
<button>4</button>
<button>5</button>
<button>6</button>
</body>
<script>
// this 指向调用者本身
var btn = document.querySelectorAll("button");
console.log(btn);
for (var i = 0; i < btn.length; i++) {
console.log(i);
btn[i].onclick = function () {
console.log(this);
};
}
setTimeout(() => {
console.log(this); // 指向window
}, 1000);
</script>
克隆
<button>浅克隆</button>
<button>深克隆</button>
<div class="box">
<div class="inner"></div>
</div>
<script>
var oBtns = document.querySelectorAll("button");
var oBox = document.querySelector(".box");
//浅克隆: 只会克隆自身结构,不会克隆子节点
oBtns[0].onclick = function () {
var cloenDiv = oBox.cloneNode(false);// false浅克隆
//把克隆的div,添加到body里
document.body.appendChild(cloenDiv)
}
//深克隆
oBtns[1].onclick = function () {
var cloenDiv = oBox.cloneNode(true);//
//把克隆的div,添加到body里
document.body.appendChild(cloenDiv)
}
</script>
子元素节点
<ul id="box">
<li>我是第01个li</li>
<li>我是第02个li</li>
<li>我是第03个li</li>
<li>我是第04个li</li>
<li>我是第05个li</li>
</ul>
<script>
// document.querySelectorAll
// document.getElementsByTagName()
// document.querySelector()
var oBox = document.querySelector("#box");
//获取第一个儿子
var ele = oBox.firstElementChild || oBox.firstChild;
ele.style.backgroundColor = "red";
ele.style.borderRadius = "5px";
//最后一个儿子
var ele = oBox.lastElementChild || oBox.lastChild;
ele.style.backgroundColor = "pink";
//获取指定的某一个
oBox.children[2].style.backgroundColor = "green";
</script>
父节点
<div class="box">
<div class="inner"></div>
</div>
<script>
//parentNode 顶级是 document
//parentElement顶级是null
// var oBox = document.querySelector(".box");
var oInner = document.querySelector(".inner");
//找父节点 找'亲'父亲
// console.log(oInner.parentNode);
// oInner.parentNode.style.backgroundColor = "pink";
// oInner.parentElement.style.backgroundColor = "green";
console.log(oInner.parentNode.parentNode.parentNode.parentNode);//document
console.log(
oInner.parentElement.parentElement.parentElement.parentElement
);//null
兄弟节点
nextSibling // 后一个
previousSibling //前一个
这篇关于DOM文本对象模型的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!