1.DOM
document object model 文档对象模型
把页面封装成js对象 包含了各种属性和方法
可以利用其提供的属性和方法 进行页面的操作(样式更改 点击事件 元素的操作)
api 提供了一个document对象
dir 目录 可以查看对象中所拥有的属性(property)和方法
console.dir(document);
获取文档标题:
document.title
获取html标签所对应的JS对象:
document.documentElement;
获取body标签对应的JS对象:
doucument.body;
document.getElementById();通过ID名查询元素
document.getElementsByClassName();通过类名查询元素得到的是伪数组,不能使用forEach,要强制转换为数组对象
Array.from(
document.getElementsByClassName("li")).forEach(function (el, i) {
console.log(el); el.style.background = colos[i]; })var colos = ["red", "blue", "yellow"];
document.getElementsByTagName("li");//通过标签名查询元素 返回值也为伪数组
document.querySelectorAll(".p");//查询多个选择器---参数为选择器类名前面要加“.”,可以使用forEach
document.querySelector("#test");//查询单个 参数为字符串
2.获取标签的内容
document.querySelector("div") // 找到是文档流中第一个元素
document.querySelector("div").innerText;//inner 内部 获取标签内容
// 不包括空格和换行
// content
document.querySelector("div").textContent;//保留内容区域的空格和换行
document.querySelector("div").innerHTML;//把标签作为内容进行展示
document.querySelector("div").outerHTML;//包含标签的整个文本
3.获取元素自带的属性
document.querySelector("div").title;
document.querySelector("div").id;
document.querySelector("div").classname;// 通过classname来修改元素的类名会覆盖之前的
// 如果要保留之前的 都拼接上去 div.className = "green red blue"; var divClass = div.classList; console.log("clname =", divClass); // add divClass.add("yellow"); // 删除 divClass.remove("red"); // 删除多个 // divClass.remove("yellow","green"); divClass.remove(...["yellow", "green"]); // replace 替换 divClass.replace("blue", "bigBlue");
document.querySelector("img").src;//获取资源路径
document.querySelector('input').value;//修改输入框中的内容
document.querySelector(".box").checked;//复选框中的状态
4.获取元素自定义属性
document.querySelector("p").getAttribute("myname");
设置自定义属性
document.querySelector("p").setArrtribute("myname","ledi");
自定义属性以data-命名的:
document.querySelector("main").getAttribute("data-name");
获取其自定义属性: document.querySelector("main").dataset.name;
设置自定义属性 : document.querySelector("main").dataset.name = "哈哈哈哈";
如果使用多个横线分隔 取值时采用小驼峰的形式:
document.querySelector("main").getAttribute("data-my-name");
document.querySelector("main").dataset.myName;
5.点击事件
document.querySelector("div").οnclick=function(){}
<style>
div {
width: 100px;
height: 100px;
background: red;
/* 让内容无法选中 */
user-select: none;
}
.active {
font-size: 50px;
color: blue;
background: yellow;
}
</style>
</head>
<body>
<button>点击</button>
<div>
点我!!!
</div>
<p>点击 会改变我的样式</p>
<script>
var div = document.querySelector("div");
var p = document.querySelector("p");
var num = 0;
var isChange = true;
// 绑定事件
// click 点击
div.onclick = function () {
// 1....
// num++;
// if (num % 2 == 0) {
// p.style.color = "red";
// p.style.background = "yellow";
// p.style.fontSize = "50px";
// }
// else{
// p.style.color = "blue";
// p.style.background = "green";
// p.style.fontSize = "30px";
// }
// 2.....
// if(isChange){
// p.style.color = "red";
// p.style.background = "yellow";
// p.style.fontSize = "50px"
// isChange = false;
// }
// else{
// p.style.color = "blue";
// p.style.background = "green";
// p.style.fontSize = "30px";
// isChange = true;
// }
// 3...
// if(isChange){
// p.style.color = "red";
// p.style.background = "yellow";
// p.style.fontSize = "50px"
// }
// else{
// p.style.color = "blue";
// p.style.background = "green";
// p.style.fontSize = "30px";
// }
// isChange = !isChange;
// 4.
// 比上边的方式更加的简洁
// if(isChange){
// p.classList.add("active");
// }
// else{
// p.classList.remove("active");
// }
// isChange = !isChange;
p.classList.toggle("active");
}
</script>
</body>
6.添加元素
6.1往标签中添加 其他标签 通过 innerHTML
document.querySelector("div").innerHTML = "<h1>哈哈哈哈哈哈哈</h1>";
6.2通过API中提供的方法 往元素中添加元素
document.createElement("h2");
6.3追加 append
append 可以追加多个 并且类型可以字符串 或者 是元素节点
document.querySelector("div").append("123",document.createElement("h2"));
追加同一个元素 只能添加一次
document.querySelector("div").appendChild(document.createElement("h2"));
追加到开头的位置 prepend
document.querySelector("div").prepend(document.createElement("h2"));