目录
5、onload 和其他的不太一样,他是写在Javascirpt里的,当js放在head里面就很有用了
一、定义
文档对象模型(Document Object Model,DOM)是一种用于HTML和XML文档的编程接口。它给文档提供了一种结构化的表示方法,可以改变文档的内容和呈现方式。我们最为关心的是,DOM把网页和脚本以及其他的编程语言联系了起来。DOM属于浏览器,而不是JavaScript语言规范里的规定的核心内容。
二、查找元素
1、直接查找
document.getElementById 根据ID获取一个标签 获取的是单个标签
document.getElementsByName 根据name属性获取标签集合 注意获取的是一个 ******数组********
document.getElementsByClassName 根据class属性获取标签集合
document.getElementsByTagName 根据标签名获取标签集合
2、间接查找
parentNode // 父节点
childNodes // 所有子节点
firstChild // 第一个子节点
lastChild // 最后一个子节点
nextSibling // 下一个兄弟节点
previousSibling // 上一个兄弟节点
parentElement // 父节点标签元素
children // 所有子标签
firstElementChild // 第一个子标签元素
lastElementChild // 最后一个子标签元素
nextElementtSibling // 下一个兄弟标签元素
previousElementSibling // 上一个兄弟标签元素
三、节点类型
节点类型都有NodeType属性来表明节点类型
节点类型 | 描述 | |
---|---|---|
1 | Element | 代表元素 |
2 | Attr | 代表属性 |
3 | Text | 代表元素或属性中的文本内容。 |
4 | CDATASection | 代表文档中的 CDATA 部分(不会由解析器解析的文本)。 |
5 | EntityReference | 代表实体引用。 |
6 | Entity | 代表实体。 |
7 | ProcessingInstruction | 代表处理指令。 |
8 | Comment | 代表注释。 |
9 | Document | 代表整个文档(DOM 树的根节点)。 |
10 | DocumentType | 向为文档定义的实体提供接口 |
11 | DocumentFragment | 代表轻量级的 Document 对象,能够容纳文档的某个部分 |
12 | Notation | 代表 DTD 中声明的符号。 |
四、节点关系
nodeType | 返回节点类型的数字值(1~12) |
nodeName | 元素节点:标签名称(大写)、属性节点:属性名称、文本节点:#text、文档节点:#document |
nodeValue | 文本节点:包含文本、属性节点:包含属性、元素节点和文档节点:null |
parentNode | 父节点 |
parentElement | 父节点标签元素 |
childNodes | 所有子节点 |
children | 第一层子节点 |
firstChild | 第一个子节点,Node 对象形式 |
firstElementChild | 第一个子标签元素 |
lastChild | 最后一个子节点 |
lastElementChild | 最后一个子标签元素 |
previousSibling | 上一个兄弟节点 |
previousElementSibling | 上一个兄弟标签元素 |
nextSibling | 下一个兄弟节点 |
nextElementSibling | 下一个兄弟标签元素 |
childElementCount | 第一层子元素的个数(不包括文本节点和注释) |
ownerDocument | 指向整个文档的文档节点 |
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<div id="t">
<span></span>
<span id="s">
<a></a>
<h1>Aaron</h1>
</span>
<p></p>
</div>
<script>
var tT = document.getElementById("t");
console.log(tT.nodeType,tT.nodeName,tT.nodeValue); //1 "DIV" null
console.log(tT.parentNode); //<body>...</body>
console.log(tT.childNodes); //[text, span, text, span#s, text, p, text]
console.log(tT.children); //[span, span#s, p, s: span#s]
var sT = document.getElementById("s");
console.log(sT.previousSibling); //#text, Node 对象形式
console.log(sT.previousElementSibling); //<span></span>
console.log(sT.nextSibling); //#text
console.log(sT.nextElementSibling); //<p></p>
console.log(sT.firstChild); //#text
console.log(sT.firstElementChild); //<a></a>
console.log(sT.lastChild); //#text
console.log(sT.lastElementChild); //<h1>Aaron</h1>
console.log(tT.childElementCount); //3
console.log(tT.ownerDocument); //#document
</script>
</body>
</html>
节点关系方法:
hasChildNodes() 包含一个或多个节点时返回true
contains() 如果是后代节点返回true
isSameNode()、isEqualNode() 传入节点与引用节点的引用为同一个对象返回true
compareDocumentPostion() 确定节点之间的各种关系
数值 关系
1 给定节点不在当前文档中
2 给定节点位于参考节点之前
4 给定节点位于参考节点之后
8 给定节点包含参考节点
16 给定节点被参考节点包含
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<div id="t">
<span></span>
<span id="s">
<a></a>
<h1>Nick</h1>
</span>
<p></p>
</div>
<script>
var tT = document.getElementById("t");
var sT = document.getElementById("s");
console.log(tT.hasChildNodes()); //true
console.log(tT.contains(document.getElementById('s'))); //true
console.log(tT.compareDocumentPosition(document.getElementById('s'))); //20,因为s被tT包含,所以为16;而又在tT之后,所以为4,两者相加为20.
console.log(tT.isSameNode(document.getElementById('t'))); //true
console.log(tT.isEqualNode(document.getElementById('t'))); //true
console.log(tT.isSameNode(document.getElementById('s'))); //false
</script>
</body>
</html>
五、各种参数列表
1、选择器
getElementById() | 一个参数:元素标签的ID |
getElementsByTagName() | 一个参数:元素标签名 |
getElementsByName() | 一个参数:name属性名 |
getElementsByClassName() | 一个参数:包含一个或多个类名的字符串 |
classList | 返回所有类名的数组
|
querySelector() | 接收CSS选择符,返回匹配到的第一个元素,没有则null |
querySelectorAll() | 接收CSS选择符,返回一个数组,没有则返回[] |
document.getElementById('id') 查找指定的id,然后我们可以进行操作:
<body>
<div id="id_1">
123
</div>
<script type="text/javascript">
var i = document.getElementById('id_1'); //查找指定的id
i.innerText = '456'; //innerText修改指定的字符串
</script>
</body>
显示效果,当我们打开IE的时候123就会被修改为456
下面操作方式也类似:
document.getElementsByName('name'):
<body>
<div name="name_1">
123
</div>
<script type="text/javascript">
var i = document.getElementsByName('name_1'); //查找指定的name,这里和ID不一样name可以有多个
for (var item in i) {
i[item].innerText = '456'; //innerText修改指定的字符串
};
</script>
</body>
document.getElementsByTagName('tagname')
<body>
<div>
123
</div>
<div>
234
</div>
<script type="text/javascript">
var i = document.getElementsByTagName('div'); //查找指定的标签类型,这里同样和ID不一样标签比如<div>标签可以有多个
for (var item in i) {
i[item].innerText = '456'; //innerText修改指定的字符串
};
</script>
</body>
2、样式操作方法style
style.cssText | 可对style中的代码进行读写 |
style.item() | 返回给定位置的CSS属性的名称 |
style.length | style代码块中参数个数 |
style.getPropertyValue() | 返回给定属性的字符串值 |
style.getPropertyPriority() | 检测给定属性是否设置了!important,设置了返回"important";否则返回空字符串 |
style.removeProperty() | 删除指定属性 |
style.setProperty() | 设置属性,可三个参数:设置属性名,设置属性值,是否设置为"important"(可不写或写"") |
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<div id="t" style="background-color: yellow; width: 100px; height: 100px">8</div>
<script>
var tT = document.getElementById("t");
console.log(tT.style.cssText); //width: 100px; height: 100px; background-color: yellow;
tT.style.cssText = "background-color: yellow; width: 200px; height: 200px"; //修改属性
console.log(tT.style.cssText); //width: 200px; height: 200px; background-color: yellow;
console.log(tT.style.item("0")); //background-color
console.log(tT.style.length); //3
console.log(tT.style.getPropertyValue("background-color")); //yellow
console.log(tT.style.getPropertyPriority("background-color")); //空字符串
console.log(tT.style.removeProperty("width")); //200px
tT.style.setProperty("width","200px",""); //设置属性,第三个值为important优先值,可不写
</script>
</body>
</html>
3、表格操作方法
createTHead() | 创建<thead>元素,返回引用 |
deleteTHead() | 删除<thead>元素 |
createTBody() | 创建<tbody>元素,返回引用 |
insertRow(0) | 插入<tr>元素,从0开始 |
deleteRow(pos) | 删除指定位置的行 |
insertCell(0) | 插入<td>元素,从0开始 |
deleteCell(pos) | 删除指定位置的单元格 |
4、表单操作方法
document.forms | 获取所有表单 |
| 提交表单 |
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<form action="https://www.baidu.com/s" method="get">
<input type="text" name="wd" />
<input type="button" value="百度一下" onclick="this.disable=true;BaiDu(this);" />
</form>
<script>
var form = document.forms; //获取所有表单
var formOne = form[0];
console.log(form);
console.log(formOne);
function BaiDu(ths) {
var inputBaiDu = ths;
inputBaiDu.parentNode.submit();
}
</script>
</body>
</html>
5、元素节点ELEMENT
nodeName | 访问元素的标签名 |
tagName | 访问元素的标签名 |
createElement() | 创建节点 |
appendChild() | 末尾添加节点,并返回新增节点 |
insertBefore() | 参照节点之前插入节点,两个参数:要插入的节点和参照节点 |
insertAfter() | 参照节点之后插入节点,两个参数:要插入的节点和参照节点 |
replaceChild() | 替换节点,两个参数:要插入的节点和要替换的节点(被移除) |
removeChild() | 移除节点 |
cloneNode() | 克隆,一个布尔值参数,true为深拷贝,false为浅拷贝 |
importNode() | 从文档中复制一个节点,两个参数:要复制的节点和布尔值(是否复制子节点) |
insertAdjacentHTML() | 插入文本,两个参数:插入的位置和要插入文本
|
6、属性节点attributes
attributes | 获取所有标签属性 |
getAttribute() | 获取指定标签属性 |
setAttribute() | 设置指定标签属 |
removeAttribute() | 移除指定标签属 |
var s = document.createAttribute("age") s.nodeValue = "18" | 创建age属性 设置属性值为18 |
7、文本节点TEXT
innerText | 所有的纯文本内容,包括子标签中的文本 |
outerText | 与innerText类似 |
innerHTML | 所有子节点(包括元素、注释和文本节点) |
outerHTML | 返回自身节点与所有子节点 |
textContent | 与innerText类似,返回的内容带样式 |
data | 文本内容 |
length | 文本长度 |
createTextNode() | 创建文本 |
normalize() | 删除文本与文本之间的空白 |
splitText() | 分割 |
appendData() | 追加 |
deleteData(offset,count) | 从offset指定的位置开始删除count个字符 |
insertData(offset,text) | 在offset指定的位置插入text |
replaceData(offset,count,text) | 替换,从offset开始到offscount处的文本被text替换 |
substringData(offset,count) | 提取从ffset开始到offscount处的文本 |
8、文档节点 Document
document.documentElement | 代表页面中的<html>元素 |
document.body | 代表页面中的<body>元素 |
document.doctype | 代表<!DOCTYPE>标签 |
document.head | 代表页面中的<head>元素 |
document.title | 代表<title>元素的文本,可修改 |
document.URL | 当前页面的URL地址 |
document.domain | 当前页面的域名 |
document.charset | 当前页面使用的字符集 |
document.defaultView | 返回当前 document 对象所关联的 window 对象,没有返回 null |
document.anchors | 文档中所有带name属性的<a>元素 |
document.links | 文档中所有带href属性的<a>元素 |
document.forms | 文档中所有的<form>元素 |
document.images | 文档中所有的<img>元素 |
document.readyState | 两个值:loading(正在加载文档)、complete(已经加载完文档) |
document.compatMode | 两个值:BackCompat:标准兼容模式关闭、CSS1Compat:标准兼容模式开启 |
write()、writeln()、 open()、close() | write()文本原样输出到屏幕、writeln()输出后加换行符、 open()清空内容并打开新文档、close()关闭当前文档,下次写是新文档 |
9、位置操作方法
document.documentElement.offsetHeight | 文档总高度 |
document.documentElement.clientHeight | 文档占当前屏幕高度 |
document.documentElement.clientWidth | 文档占当前屏幕宽度 |
offsetHeight | 自身高度(height + padding + border) |
scrollHeight | 文档高度(height + padding) |
offsetTop | 距离上级标签定位高度(magin) |
clientTop | border高度(border) |
offsetParent | 父级定位标签,元素 |
scrollTop | 滚动高度 |
六、详细操作
1、内容
innerText 文本
outerText
innerHTML HTML内容
innerHTML
value 值
2、属性
attributes // 获取所有标签属性
setAttribute(key,value) // 设置标签属性
getAttribute(key) // 获取指定标签属性
/*
var atr = document.createAttribute("class");
atr.nodeValue="democlass";
document.getElementById('n1').setAttributeNode(atr);
*/
正反先示例:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<button onclick="selectAll()">全选</button>
<button onclick="Cancel()">取消</button>
<button onclick="reverse()">反选</button>
<hr>
<table border="1px" >
<tr>
<td><input type="checkbox"></td>
<td>111</td>
<td>111</td>
<td>111</td>
</tr>
<tr>
<td><input type="checkbox"></td>
<td>222</td>
<td>222</td>
<td>222</td>
</tr>
<tr>
<td><input type="checkbox"></td>
<td>333</td>
<td>333</td>
<td>333</td>
</tr>
</table>
<script>
function selectAll() {
var inputs=document.getElementsByTagName("input");
for (var i=0;i<inputs.length;i++){
var input=inputs[i]
input.checked=true;
}
}
function Cancel() {
var inputs=document.getElementsByTagName("input");
for (var i=0;i<inputs.length;i++){
var input=inputs[i]
input.checked=false;
}
}
function reverse() {
var inputs=document.getElementsByTagName("input");
for (var i=0;i<inputs.length;i++){
var input=inputs[i];
input.checked=!input.checked;
// if(input.checked){
// input.checked=false
// }else {
// input.checked=true
// }
}
}
</script>
</body>
</html>
3、class操作
className // 获取所有类名
classList.remove(cls) // 删除指定类
classList.add(cls) // 添加类
4、标签操作
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
.div1,.div2,.div3,.div4{
width: 300px;
height: 100px;
}
.div1{
background-color: green;
}
.div2{
background-color: yellow;
}
.div3{
background-color: rebeccapurple;
}
.div4{
background-color: deeppink;
}
</style>
</head>
<body>
<div class="div1">
<button onclick="add()">add</button>
hello div1
</div>
<div class="div2">
<button onclick="del()">del</button>
hello div2
</div>
<div class="div3">
<button onclick="change()">change</button>
<p>hello div3</p>
</div>
<div class="div4">hello div4</div>
<script>
function change() {
var img=document.createElement("img");//<img src="">
//img.setAttribute("src","meinv.jpg");
img.src="meinv.jpg";
var ele=document.getElementsByTagName("p")[0];
var father=document.getElementsByClassName("div3")[0];
father.replaceChild(img,ele)
}
function add() {
var ele=document.createElement("p");//<p></p>
ele.innerHTML="<h1>hello p</h1>";
//ele.innerText="<h1>hello p</h1>";
ele.style.color="red";
ele.style.fontSize="10px";
var father=document.getElementsByClassName("div1")[0];
father.appendChild(ele)
}
function del() {
var father=document.getElementsByClassName("div1")[0];
var son=father.getElementsByTagName("p")[0];
father.removeChild(son)
}
</script>
</body>
</html>
5、样式操作
var obj = document.getElementById('i1')
obj.style.fontSize = "32px";
obj.style.backgroundColor = "red";
<input onfocus="Focus(this);" onblur="Blur(this);" id="search" value="请输入关键字" style="color: gray;" />
<script>
function Focus(ths){
ths.style.color = "black";
if(ths.value == '请输入关键字' || ths.value.trim() == ""){
ths.value = "";
}
}
function Blur(ths){
if(ths.value.trim() == ""){
ths.value = '请输入关键字';
ths.style.color = 'gray';
}else{
ths.style.color = "black";
}
}
</script>
6、位置操作
总文档高度
document.documentElement.offsetHeight
当前文档占屏幕高度
document.documentElement.clientHeight
自身高度
tag.offsetHeight
距离上级定位高度
tag.offsetTop
父定位标签
tag.offsetParent
滚动高度
tag.scrollTop
/*
clientHeight -> 可见区域:height + padding
clientTop -> border高度
offsetHeight -> 可见区域:height + padding + border
offsetTop -> 上级定位标签的高度
scrollHeight -> 全文高:height + padding
scrollTop -> 滚动高度
特别的:
document.documentElement代指文档根节点
*/
7、提交表单
document.geElementById(
'form'
).submit()
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<form action="" id="form1">
<input type="text" name="username">
<input type="submit" value="提交">
</form>
<script>
var ele=document.getElementById("form1");
ele.onsubmit=function (e) {
// console.log("hello")
alert(1234);
//return false
//e.preventDefault()
}
</script>
</body>
</html>
8、定时器
setInterval | 多次定时器(毫秒计时) |
clearInterval | 清除多次定时器 |
setTimeout | 单次定时器 |
clearTimeout | 清除单次定时器 |
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<script>
function f() {
console.log("hello...")
}
var c=setTimeout(f,1000);
// clearTimeout(c)
</script>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
#id1{
width: 200px;
height: 50px;
}
</style>
</head>
<body>
<input type="text" id="id1" onclick="begin()">
<button onclick="end()">停止</button>
<script>
function showTime() {
var current_time=new Date().toLocaleString();
var ele=document.getElementById("id1")
ele.value=current_time
}
var clock1;
function begin() {
if(clock1==undefined){
showTime();
clock1=setInterval(showTime,1000)
}
}
function end() {
clearInterval(clock1);
clock1=undefined
}
</script>
</body>
</html>
9、弹出框
alert() | 弹出框 |
confirm() | 确认框 返回值:true、false |
prompt() | 输入框 两个参数:提示的文本和输入的默认值,返回值:输入的值、""、null |
10、location
location.href
| 获取URL 重定向 |
location.assign() | 重定向到URL |
location.search = "wd=suoning" | 修改查询字符串(百度搜索) |
location.hostname | 服务主机名,例:www.cnblogs.com |
location.pathname | 路径,例:suoning |
location.port | 端口号 |
location.reload() | 重新加载 |
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<button onclick="f()">click</button>
<script>
function f() {
//location.reload()
//location.assign("http://www.baidu.com")
location.replace("http://www.baidu.com")
}
</script>
</body>
</html>
11、其它(history)
navigator | 包含有关浏览器的信息 |
screen | 包含有关客户端显示屏幕的信息 |
history | 包含用户(在浏览器窗口中)访问过的 URL |
window.print(); | 显示打印对话框 |
//后退一页
history.go(-1)
//前进一页
history.go(1);
//前进两页
history.go(2);
//无参数时,刷新当前页面
history.go()
//后退一页
history.back()
//前进一页
history.forward()
七、事件
1、注册 事件
首先了解下面的意思:
事件:比如有一个“按钮”,当你点击的时候发生什么,双击的时候发生什么,这个就叫做事件!
注册:首先这个按钮,当你点击的时候发生的动作,上面的事件要使他出现我们想要的效果,首先得把事件和函数进行绑定,然后把他们注册到指定标签上。
常用事件:
- onclick
- onblur
- onfocus
- ..................
举例代码如下:
写一个p的标签,首先把事件和函数进行绑定,当你一点这个按钮的时候就会自动执行,绑定的函数:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<div class="v1">
<div class="v2">dddd</div>
<div class="v2">dddd</div>
<div class="v2">dddd</div>
<div class="v2">dddd</div>
<div class="v2">dddd</div>
<p id="p1" onclick="func(this)">pppppp</p>
</div>
<script>
//function func(that) {
// console.log(that)
//
// console.log(that.previousElementSibling);
// console.log(that.parentNode);
//
//}
// var ele=document.getElementById("p1");
// ele.onclick=function () {
// alert(123)
// };
// 事件绑定2
var ele2=document.getElementsByClassName("v2");
for(var i=0;i<ele2.length;i++){
ele2[i].onclick=function () {
alert(555)
}
}
</script>
</body>
</html>
2、事件列表
属性 | 此事件什么时候发生(什么时候被触发 |
onabort | 图象的加载被中断 |
onblur | 元素失去焦点 |
onchange | 区域的内容被修改 |
onclick | 当用户点击某个对象时调用的事件句柄(比点击p标签时执行上面的代码例子) |
ondblclick | 当用户双击某个对象时调用的事件句柄 |
onerror | 在加载文档或图像时发生错误 |
onfocus | 元素获得焦点 |
onkeydown | 某个键盘按键被按下 |
onkeypress | 某个键盘按键被按下并松开 |
onkeyup | 某个键盘被松开 |
onload | 一张页面或一副图片完成加载 |
onmousedown | 鼠标按钮被按下 |
onmousemove | 鼠标移动过来后 |
onmouseout | 鼠标从某个元素移开 |
onmouseover | 鼠标移动到某个元素之上 |
onmouseup | 鼠标按键被松开 |
onreset | 重置按钮被点击 |
onresize | 窗口或框架被重新调整大小 |
onselect | 文本被选中 |
onsubmit | 确认按钮被点击 |
onunload | 用户退出页面 |
对于事件需要注意的要点:
- this
- event
- 事件链以及跳出
this标签当前正在操作的标签,event封装了当前事件的内容。
实例:
1、跑马灯
<!DOCTYPE html>
<html>
<head>
<meta charset='utf-8' >
<title>欢迎blue shit莅临指导 </title>
<script type='text/javascript'>
function Go(){
var content = document.title;//获取title的内容
console.log(content)
var firstChar = content.charAt(0)//获取content第一个元素
console.log(firstChar)
var sub = content.substring(1,content.length)//获取content字符串剩余的元素
console.log(sub)
document.title = sub + firstChar;
}
setInterval('Go()',1000);
</script>
</head>
<body>
</body>
</html>
2、window对象的方法
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<script>
// window对象的方法
//alert
window.alert("hello")
//confirm
var ret=window.confirm("hello Yuan");
console.log(ret)//返回布尔值
// prompt
var ret2=window.prompt("hello....")
console.log(ret2)//接收用户输入的内容
// open("http://www.baidu.com")
setInterval(f,1000);
function f(){
console.log(666)
}
</script>
</body>
</html>
3、属性查找
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<div class="div1">
<p name="littleP" class="p1">hello p</p>
<div class="div2">hello div
<div>div3</div>
<a href="">click</a>
</div>
<span>span</span>
</div>
<span>spanspanspanspan</span>
<div>hhhhh</div>
<script>
// var ele=document.getElementById()
var ele=document.getElementsByClassName("p1")[0];
// console.log(ele)
// console.log(ele.nodeName);
// console.log(ele.nodeType);
// console.log(ele.nodeValue);
// console.log(ele.innerHTML);
// ele.innerHTML="hello world"
// var p_ele=ele.parentNode;
// console.log(p_ele.nodeName)
// var b_ele=ele.nextSibling;
// console.log(b_ele.nodeName);// 为文体节点#text
// var b_ele2=ele.nextElementSibling;
// console.log(b_ele2.nodeName);
// console.log(b_ele2.innerHTML)
// var ele3=document.getElementsByClassName("div1")[0];
// console.log(ele3.children[1].children)
// eg:
// var ele4=document.getElementsByName("littleP")[0]
// var ele5=ele4.nextElementSibling;
// console.log(ele5.innerHTML);
// console.log(ele5.innerText);
//
// ele5.innerHTML="<h1>YUAN</h1>";
//局部查找
var ele6=document.getElementsByClassName("div1")[0];
var ele7=ele6.getElementsByTagName("span");
console.log(ele7[0].innerHTML)
</script>
</body>
</html>
4、模态对话模框
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
.content{
height: 1800px;
background-color: white;
}
.shade{
position: fixed;
top:0;
left: 0;
right: 0;
bottom: 0;
background-color: gray;
opacity: 0.7;
}
.model{
width: 200px;
height: 200px;
background-color: bisque;
position: absolute;
top:50%;
left: 50%;
margin-top: -100px;
margin-left: -100px;
}
.hide{
display: none;
}
</style>
</head>
<body>
<div class="content">
<button onclick="show()">show</button>
hellohellohellohellohellohellohellohellohellohellohellohello
</div>
<div class="shade hide"></div>
<div class="model hide">
<button onclick="cancel()">cancel</button>
</div>
<script>
function show() {
var ele_shade=document.getElementsByClassName("shade")[0];
var ele_model=document.getElementsByClassName("model")[0];
ele_model.classList.remove("hide");
ele_shade.classList.remove("hide");
}
function cancel(){
var ele_shade=document.getElementsByClassName("shade")[0];
var ele_model=document.getElementsByClassName("model")[0];
ele_model.classList.add("hide");
ele_shade.classList.add("hide");
}
</script>
</body>
</html>
5、onload 和其他的不太一样,他是写在Javascirpt里的,当js放在head里面就很有用了
<script>
// 这里的onload是,当整个页面加载完成之后才执行的,整个页面包含的元素加载完成之后才执行的.
window.onload = function () {
alert("The page Load complete")
};
function edit() {
var i = document.getElementById('id_1');
i.className = 'color_red';
}
function rollback() {
var i = document.getElementById('id_1');
i.className = ''; //这里只要给他设置为空即可
}
</script>
6、事件传播
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
.outer{
width: 300px;
height: 300px;
background-color: antiquewhite;
}
.inner{
width: 100px;
height: 100px;
background-color: rebeccapurple;
}
</style>
</head>
<body>
<div class="outer" onclick="func2()">
<div class="inner"></div>
</div>
<script>
var ele=document.getElementsByClassName("inner")[0];
ele.onclick= function (e) {
alert("I am inner!");
e.stopPropagation()//事件停止向外传播
};
function func2() {
alert("I am outer!")
}
</script>
</body>
</html>
7、二级联动
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<select id="provinces">
<option value="">请选择省份</option>
<!--<option value="">河北省</option>-->
<!--<option value="">河南省</option>-->
<!--<option value="">北京</option>-->
</select>
<select name="" id="citys">
<option value="">请选择城市</option>
</select>
<script>
// a={name:"alex"};
// b={"name":"alex"};
// console.log(a.name);
// console.log(b["name"]);
// data={"河北省":["石家庄","廊坊"],"山西":["晋城","大同"],"陕西":["西安","延安"]};
// console.log(data);
// console.log(typeof data);
// console.log(data["河北省"]);
// console.log(data.河北省);
//
// for (var i in data){
// console.log(i);
// }
data={"河北省":["石家庄","廊坊"],"山西":["晋城","大同"],"陕西":["西安","延安"]};
var pro_ele=document.getElementById("provinces");
var city_ele=document.getElementById("citys")
for(var i in data){
var ele=document.createElement("option");
ele.innerHTML=i;
pro_ele.appendChild(ele)
}
pro_ele.onchange=function () {
console.log(this.selectedIndex);
console.log(this.options[this.selectedIndex])
var citys=data[this.options[this.selectedIndex].innerHTML];
city_ele.options.length=1;
for(var i=0;i<citys.length;i++){
var ele=document.createElement("option");
ele.innerHTML=citys[i];
city_ele.appendChild(ele)
}
}
</script>
</body>
</html>
8、输入框
<!DOCTYPE html>
<html>
<head>
<meta charset='utf-8' />
<title></title>
<style>
.gray{
color:gray;
}
.black{
color:black;
}
</style>
</head>
<body>
<!--input标签内注注册了两个事件(onfocus/onblur并且事件已经绑定了函数)-->
<input type='text' class='gray' id='tip' value='请输入关键字' onfocus='Enter();' onblur='Leave();'/>
<script type="text/javascript">
function Enter(){ //函数Enter的作用,当元素获得焦点就把里面的值设置为空并把颜色设置为黑色
var id= document.getElementById("tip"); //找到id为tip的标签并赋值给id
id.className = 'black'; //给id的class设置为black
if(id.value=='请输入关键字'||id.value.trim()==''){
id.value = ''
} //判断找到的标签的value='请输入关键里'或者你输入的内容为空
}
function Leave(){ //函数Leave的作用,当元素失去焦点就把里面的值设置为"请输入关键字"并把颜色设置为灰色
var id= document.getElementById("tip"); //找到id为tip的标签病赋值为id
var val = id.value; //吧id的value属性赋值为val
if(val.length==0||id.value.trim()==''){
id.value = '请输入关键字';
id.className = 'gray';
}else{
id.className = 'black';
} //判断如果val的长度为0,或者用户输入为空字符,吧id的value设置为"请输入关键字"
//否则吧id.class设置为black
}
</script>
</body>
</html>