DOM速成
DOM速成(Crash Course For Beginners)。教程视频地址:DOM速成。
准备
- 浏览器:Google Chrome(多浏览器测试)
- 编辑器:Visual Studio Code
什么是DOM
各部分作用:
- HTML: structure
- CSS: style
- JS: function
JavaScript DOM:DOM(Document Object Model),文本对象模型。
DOM结构:树状结构。
有用的插件:Chrome浏览器的HTML Tree Generator插件。
选择
新建HTML、CSS文件,浏览器打开,在开发者界面控制台输入document
,返回整个HTML内容。
通过document
选取HTML里面的一些东西(Elements):document.getElementsByTagName("body")
。
获取第一个body
,数组实现:document.getElementsByTagName("body")[0]
。
获取长度:document.getElementsByTagName("body").length
。
通过类名获取:document.getElementsByClassName("list")
。
通过ID获取:document.getElementById("title")
。(注意是element是单数,因为ID具有唯一性)。
Query选择:
(CSS选择器)
document.querySelector("li")
:从上到下,选择第一个找到的。document.querySelectorAll("li")
选择所有。- 选择
ul
下的li
:document.querySelector("ul li")
。 - 使用ID的方式:
document.querySelectorAll("#sp-list li")
。 - 使用ID和类:
document.querySelectorAll("#sp-list li.list")
。
选择之后做什么
改CSS样式:document.querySelector("h1").style.color="red"
。可以几乎更改所有CSS属性。但是CSS中属性的命名方式是加短横线-
,JavaScript DOM中一般是驼峰命名法。
参考网址:HTML DOM Style Object。
用变量存储下来:var title = document.querySelector("h1");
,然后更改title.style.backgroundColor="white";
。
添加class:原本HTML文件的标签没有class,但是CSS里面有class的样式。通过DOM选择该标签,然后为改标签添加class,HTML就会使用CSS中已经有的对应该class的样式。document.querySelector("h1").classList.add("title");
。remove
移除。
点击按钮,标题变红色:document.querySelector("h1").classList.toggle("title");
,document.querySelector("button").addEventListener("click",function(){document.querySelector("h1").classList.toggle("title");});
。
改文本内容:document.querySelector("h1").innerHTML="Goodbye";
。加着重表示:document.querySelector("h1").innerHTML="<em>Goodbye</em>";
。直接返回内容:document.querySelector("h1").innerHTML;
。(会同时返回HTML标签)不返回HTML标签:document.querySelector("h1").textContent;
。
属性attribute:document.querySelector("li").attributes;
。如果只需要某一个属性:document.querySelector("ul").getAttribute("class");
。改某一个属性:document.querySelector("li").attributes.class.value="title";
。设置(添加)一个属性:document.querySelector("h1").setAttribute("class","title");
。
使用的HTML文件:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<h1>Hello</h1>
<button>Click me</button>
<ul id="sp-list" class="list">
<li class="list">First</li>
<li class="list">Second</li>
<li>Third</li>
</ul>
</body>
</html>
使用的CSS文件:
li.list{
background-color: red;
}
.title{
color: red;
}
文档:DOM。