曲曲的秘密学术基地

纯化欲望、坚持严肃性

欢迎!我是曲泽慧(@zququ),目前在深圳(ICBI,BCBDI,SIAT)任职助理研究员。


病毒学、免疫学及结构生物学背景,可以在 RG 上找到我已发表的论文

本站自2019年7月已访问web counter

DOM 基础

  • HTML — Structure
  • CSS — Style
  • JS — Function

DOM 简介

Document Object Model 文本对象模型

对于一段 HTML 代码:

<html>
	<head>
		<title>This is a page title</title>
	</head>
	<body>
		<h1>This is a heading</h1>
		<p>This is a paragraph</p>
		<p>This is a paragraph</p>
	</body>
</html>

figure1

可以利用 Chrome 插件,HTML Tree Generator 来看网页 HTML 结构

在浏览器 Console 中输入 document,会返回完整的 HTML 代码。

DOM 有两种常用选择器,即 document.get 以及 querySelector 方法。querySelector 往往更加高效以及准确。

DOM document.get 方法

对于以下 HTML 代码,

<!DOCTYPE html>
<html lang="en">

<head>
	<meta charset="UTF-8">
	<title>Document</title>
	<link rel="stylesheet" href="style.css">
</head>

<body>
	<h1 id = "title">Hello</h1>

	<button>Click me</button>

	<ul>
		<li class = 'list'>Fisrt</li>
		<li class = 'list'>Second</li>
		<li class = 'list'>Third</li>
	</ul>
</body>

</html>
<!--通过 Tag 标签来获得对象-->
document.getElementsByTagName("body");

<!--对于 li,可以访问 length 属性,或者对应位置的值-->
document.getElementsByTagName("li").length;
document.getElementsByTagName("li")[1];

<!--通过 document.get 访问类对象,返回 li 中所有的值-->
document.getElementsByClassName("list");
// 返回 HTMLCollection(3) [li.list, li.list, li.list]

<!--通过 document.get 访问 id-->
document.getElementsById("title");
// 返回 <h1 id="title">Hello</h1>

document.querySelector 方法

对于以下 HTML 代码,

<!DOCTYPE html>
<html lang="en">

<head>
	<meta charset="UTF-8">
	<title>Document</title>
	<link rel="stylesheet" href="style.css">
</head>

<body>
	<h1 id = "title">Hello</h1>

	<button>Click me</button>

	<ul id = "sp=list">
		<li class = 'list'>Fisrt</li>
		<li class = 'list'>Second</li>
		<li>Third</li>    <!--注意这里取消了对于 Third 的 list class-->
	</ul>
</body>

</html>
<!--通过 querySelector 选择-->
document.querySelector("li");
// 只会返回一个 list class 的 li 标签对象
// 即 <list class = "list">First</li>
// 因为 querySelector 只会遍历代码找到第一个 li 并返回

<!--通过 querySelectorAll 来选择全部标签对象-->
document.querySelectorAll("li");
// 返回全部
// 即 NodeList(3) [li.list, li.list, li]

<!--querySelector 可以以"外标签 内标签"的方式更加精准对标签进行定位-->
document.querySelector("ul li");
// 返回 ul 中的第一个 li
// 即 <li class="list">First</li>

<!--利用 querySelector 选取 id 对应的 li-->
document.querySelectorAll("#sp-list li");
// 返回 Node(3) [li.list, li.list, li]

<!--利用 querySelector 选取 id 对应的 li 下,进一步的 list -->
document.querySelectorAll("#sp=list li.list");
// 返回 Nodelist(2) [li.list, li.list]

选择后对 style 进行修改

我们可以利用选择器来对 HTML 进行修改。对于下面一段代码:

<!DOCTYPE html>
<html lang="en">

<head>
	<meta charset="UTF-8">
	<title>Document</title>
	<link rel="stylesheet" href="style.css">
</head>

<body>
	<h1 id = "title">Hello</h1>

	<button>Click me</button>

	<ul>
		<li class = 'list'>Fisrt</li>
		<li class = 'list'>Second</li>
		<li class = 'list'>Third</li>
	</ul>
</body>

</html>
<!--利用 querySelector 对标题颜色进行修改 -->
document.querySelector("h1").style.color = "red"

<!--利用 querySelector 对标题背景进行修改-->
document.querySelector("h1").style.backgroundColor = "black"

实际上,可以利用 JS 修改所有 CSS Object,但属性名称不同,如在 CSS 中 background-color 在 JS 中使用驼峰书(Camel Case)写方法,即 backgroundColor

更多的可以在 w3shool.com 找到所有的 HTML DOM Style Object

利用变量(var)快速访问

我们可以利用新建变量的方法来快速访问某一个对象。如下代码:

var title = document.querySelector("h1")

<!--这样就看可以快速访问并修改了-->
title.sytle.backgroundColor = "white";

DOM classList 的使用

对于以下 HTML 代码:

<!DOCTYPE html>
<html lang="en">

<head>
	<meta charset="UTF-8">
	<title>Document</title>
	<link rel="stylesheet" href="style.css">
</head>

<body>
	<h1 class = "title">Hello</h1>

	<button>Click me</button>

	<ul>
		<li class = 'list'>Fisrt</li>
		<li class = 'list'>Second</li>
		<li class = 'list'>Third</li>
	</ul>
</body>

</html>

使用 classList 可以返回对应元素的信息,

document.querySelector("h1").classList;
// 返回
// DOMTokenList ["title", value: "title"]
//	0: "title"
//	length: 1
//	value: "title"
//	__proto__: DOMTokenList

document.querySelector("li").classList;
// 返回
// DOMTokenList ["list", value: "list"]
//	0: "list"
//	length: 1
//	value: "list"
//	__proto__: DOMTokenList

加入我们在 CSS 中添加了一个新的 title 类及对应的属性

.title {
	color: red;
}

可以利用 classListadd 方法,来为选择的对象元素,添加 CSS 中定义的类属性:

document.querySelector("h1").classList.add("title");

<!--也可以进行移除-->
document.querySelector("h1").classList.remove("title");

DOM 的 toggle 方法

使用 toggle 方法可以切换是否添加某一类属性,

document.querySelector("h1").classList.toggle("title");
// 返回
// true

document.querySelector("h1").classList.toggle("title");
// 返回
// false

利用 DOM 添加事件

加时间监听器 .addEventListner("事件", "当事件执行时发生什么内容")

document.querySelector("Button").addEventListner("click", function() {
	document.querySelector("h1").classList.toggle("title");
});
// 可以实现点击按钮时,切换 h1 颜色

利用 DOM 修改文本

利用 innerHTML 来修改

<!--修改文本-->
document.querySelector("h1").innerHTML = "Goodbye";

<!--加斜体-->
document.querySelector("h1").innerHTML = "<em>Goodbye<em>";

<!--返回文字内容,注意不会返回格式,只会返回文本-->
document.querySelector("h1").textContent;

利用 DOM 修改属性

document.querySelector("li").attributes;
// 返回
// 属性,包括 class,class 的值等等

document.querySelector("ul").attributes;
// 返回
// id, class 及对应的值

<!--获得属性-->
document.querySelector("ul").getattributes;
// 获得"list"

<!--对属性进行修改-->
document.querySelector("li").attributes.class.value = "title";

<!--更简单的方法, setAttribute-->
document.querySelector("h1").setAttribute("class", "title");

更多内容

更多内容访问 MDN 搜索 DOM。

Last One

python 正则表达式

python 正则表达式 re 模块python 通过 re 模块来实现>>> import re>>> re.research(r'FishC', 'I love FishC.com')<_sre.SRE_Match object; span=(7, 12), match = 'FishC'> search() 方法用于在字符串中搜索正则表达式模式第一次出现的 位置 。这种方法类似于 find()方法,>>> "I lo...…

pythonMore
Next One

JavaScript 基础

什么是 JavaScript 三种方式添加 JavaScript 总汇 字符串方法 逻辑操作符 变量与常量 运算符 控制结构 循环 while 循环 作用域 for 循环 判断 三元操作符 switch 对象 数组 函数 闭包什么是 JavaScript 一种编程语言,可以在网页上实现复杂的功能,交互等 解释型语言 运行在客户端 面向对象语言三种方式添加 Java...…

blogMore