JavaScript高级语法
/
JavaScriptDom
获得操作节点权限
方案一: 获取元素节点
document.getElementById()
let pp = document.getElementById("pp") # pp就是id属性
console.log(pp);
方案二: document.querySelector()
let pp = document.querySelector("CSS选择器");
console.log(pp);
注意 当有多个相同选择目标 只选择第一个
方案三 document.querySelectorAll()
let pp = document.querySelectorAll("CSS选择器"); 返回一个节点的数组
for (let item of pp){
console.log(item.innerText);
}
#js of 遍历节点数组和 获取节点inner元素的内容
不论你怎么获取都得到的是一个元素数组 你需要使用下标调用或者遍历
操作节点的标签、文本、属性(增删改查)
设置 / 获得 内容
标签 innerHTML
可以获得或者设置元素内容(包含HTML标签)
let pp = document.querySelector(".pp")
pp.innerHTML = "hello" // 修改
console.log(pp.innerHTML); // 获得
pp.innerHTML = "<h1>hello</h1>"
console.log(pp.innerHTML);
pp.innerHTML = "" // 删除
标签 innerText
let pp = document.querySelector(".pp")
pp.innerText = "hello"
console.log(pp.innerText);
pp.innerText = "<h1>hello</h1>"
console.log(pp.innerText);
pp.innerText = "" // 删除
innerHTML和innerText
- innerHTML:获取标签内所有的代码,包含子标签和文本;修改内容时会把完整的标签进行解析
- innerText:获取标签类所有的纯文本,只包含纯文本;修改内容时不会把标签进行解析,会原样输出
input类 value
value只针对表单标签生效,input,select都收这个控制
let inp = document.querySelector(".inp")
inp.value = " love" // 修改
console.log(inp.value); // 获得 元素对象.属性 获得属性的值
inp.value = "" // 删除
属性操作
let pp = document.querySelector(".pp");
pp.setAttribute("style","color:green;") // set设置属性 /添加属性 “属性”,“值”
let attr = pp.getAttribute("style") // 获得 get("属性")获得值
console.log(attr);
pp.removeAttribute("style") // 删除 removeAttribute删除属性
特例
let img = document.querySelector("img") img元素对象 直接给src属性赋值
img.src = "./img/mv.jpg"
实战 - 将图片元素添加到页面
方案一 : 添加字符串图片
let bb = document.querySelector("body")
let img_str = "<img src='./img/mv.jpg'/>"
bb.innerHTML = bb.innerHTML + img_str // bb.innerHTML += img_str
方案二 : 添加图片元素
let bb = document.querySelector("body")
let img_ele = new Image() // 创建一个图片元素 给他一个网络路径则会发起网络请求 在body元素 创建Image 对象 给对象.src属性赋值
img_ele.src = "./img/mv.jpg"
bb.append(img_ele) // 想页面追加元素 .append(追加)对象
实战 - 动态JS添加新闻
let news_list = [
{
id:101001,
title : "花季少女竟然这样...",
author:"花季少女",
buildtime :"2024/05/15"
},
{
id:101002,
title : "新入职的员工竟然这样说,老板表示...",
author:"花季少女",
buildtime :"2024/05/15"
},
{
id:101003,
title : "可乐真的好喝...",
author:"可乐少年",
buildtime :"2024/05/15"
}
]
let tbody = document.querySelector("tbody")
let need_insert_str = ""
for (let item of news_list){
need_insert_str += `
<tr>
<td>${item.id}</td>
<td><a href="./news_detail.html?id=${item.id}">${item.title}</a></td>
<td>${item.author}</td>
<td>${item.buildtime}</td>
</tr>
`
}
tbody.innerHTML += need_insert_str
事件
概述
定义:用户跟页面之间所有交互动作称为事件。每一个动作就是一个事件,比如:点击、双击、鼠标移入移出等等,JavaScript可以实现当某个事件触发时,可以执行指定的代码。
三要素
事件源:触发事件的标签
事件类型:点击、双击、鼠标移入、鼠标移出
事件处理程序:当事件发生时,需要执行的指定的代码或操作
类型
文档就绪事件
你告诉浏览器:我这个事件是要页面整个加载完成后再触发。
| 事件类型 | 说明 |
|---|---|
| onload | 在页面加载完成之后、图片加载完成之后触发 |
<script>
onload = function(){
ele = document.getElementById("xigua");}
</script>
鼠标事件
| 事件类型 | 说明 |
|---|---|
| click | 鼠标单击时 |
| dblclick | 鼠标双击时 |
| mousedown | 鼠标按下时 |
| mouseup | 鼠标松开时 |
| mouseenter | 鼠标指针进入标签时触发 |
| mouseleave | 鼠标指针离开标签时触发 |
| mousewheel | 当鼠标滚轮滚动时触发 |
键盘事件
| 事件类型 | 说明 |
|---|---|
| keydown | 当键盘按键按下时触发 |
| keypress | 当键盘按键按下并松开时触发,有一些浏览器不支持 |
| keyup | 当键盘按键松开时触发 |
表单事件
| 事件类型 | 说明 |
|---|---|
| blur | 输入框失去焦点时触发 |
| focus | 输入框获取焦点时触发 |
| change | 表单元素改变内容或状态时触发 |
| input | 输入框内容发生改变时触发(input或textarea的值发生改变,实时) |
| submit | 表单提交时触发 |
事件触发
DOM0触发
语法:
节点对象.on事件类型=function(){
js代码:当事件触发时需要执行的代码
}
ele = document.getElementById("xigua1");
ele.onclick = function(){
}
DOM2触发

节点.addEventListener("事件类型",function(){
js代码
})
ele = document.getElementById("demo");
ele.addEventListener("click", function(){
alert(222);
})
location
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>DOM2</title>
</head>
<body>
<!-- 点击某个元素,弹出弹框 -->
<input type="button" value="请点击" id="demo">
<!-- 点击某个元素,让它切换形状、颜色 -->
<script>
// 使用DOM0触发弹出弹窗的事件
ele = document.getElementById("demo");
ele.onclick = function() {
location.href = "https://woniuxy.com";
}
</script>
</body>
</html>
其他api
浏览器历史对象
back():返回上一级
forward():前进
go():跳转
length():浏览网页的数量
定时器
setInterval(函数,时间),毫秒)
<script>
setInterval(function(){
alert("你最美");
}, 1000)
</script>
延时定时器
setTimeout(函数,时间)毫秒
<script>
setTimeout(function(){
alert(999);
}, 2000);
获取cookie
document.cookie
附录:
DOM对象
| 属性 / 方法 | 描述 |
|---|---|
| document.activeElement | 返回当前获取焦点元素 |
| document.addEventListener() | 向文档添加句柄 |
| document.adoptNode(node) | 从另外一个文档返回 adapded 节点到当前文档。 |
| document.anchors | 返回对文档中所有 Anchor 对象的引用。 |
| document.applets | 返回对文档中所有 Applet 对象的引用。注意: HTML5 已不支持 元素。 |
| document.baseURI | 返回文档的绝对基础 URI |
| document.body | 返回文档的body元素 |
| document.close() | 关闭用 document.open() 方法打开的输出流,并显示选定的数据。 |
| document.cookie | 设置或返回与当前文档有关的所有 cookie。 |
| document.createAttribute() | 创建一个属性节点 |
| document.createComment() | createComment() 方法可创建注释节点。 |
| document.createDocumentFragment() | 创建空的 DocumentFragment 对象,并返回此对象。 |
| document.createElement() | 创建元素节点。 |
| document.createTextNode() | 创建文本节点。 |
| document.doctype | 返回与文档相关的文档类型声明 (DTD)。 |
| document.documentElement | 返回文档的根节点 |
| document.documentMode | 返回用于通过浏览器渲染文档的模式 |
| document.documentURI | 设置或返回文档的位置 |
| document.domain | 返回当前文档的域名。 |
| document.domConfig | 已废弃。返回 normalizeDocument() 被调用时所使用的配置。 |
| document.embeds | 返回文档中所有嵌入的内容(embed)集合 |
| document.forms | 返回对文档中所有 Form 对象引用。 |
| document.getElementsByClassName() | 返回文档中所有指定类名的元素集合,作为 NodeList 对象。 |
| document.getElementById() | 返回对拥有指定 id 的第一个对象的引用。 |
| document.getElementsByName() | 返回带有指定名称的对象集合。 |
| document.getElementsByTagName() | 返回带有指定标签名的对象集合。 |
| document.images | 返回对文档中所有 Image 对象引用。 |
| document.implementation | 返回处理该文档的 DOMImplementation 对象。 |
| document.importNode() | 把一个节点从另一个文档复制到该文档以便应用。 |
| document.inputEncoding | 返回用于文档的编码方式(在解析时)。 |
| document.lastModified | 返回文档被最后修改的日期和时间。 |
| document.links | 返回对文档中所有 Area 和 Link 对象引用。 |
| document.normalize() | 删除空文本节点,并连接相邻节点 |
| document.normalizeDocument() | 删除空文本节点,并连接相邻节点的 |
| document.open() | 打开一个流,以收集来自任何 document.write() 或 document.writeln() 方法的输出。 |
| document.querySelector() | 返回文档中匹配指定的CSS选择器的第一元素 |
| document.querySelectorAll() | document.querySelectorAll() 是 HTML5中引入的新方法,返回文档中匹配的CSS选择器的所有元素节点列表 |
| document.readyState | 返回文档状态 (载入中……) |
| document.referrer | 返回载入当前文档的文档的 URL。 |
| document.removeEventListener() | 移除文档中的事件句柄(由 addEventListener() 方法添加) |
| document.renameNode() | 重命名元素或者属性节点。 |
| document.scripts | 返回页面中所有脚本的集合。 |
| document.strictErrorChecking | 设置或返回是否强制进行错误检查。 |
| document.title | 返回当前文档的标题。 |
| document.URL | 返回文档完整的URL |
| document.write() | 向文档写 HTML 表达式 或 JavaScript 代码。 |
| document.writeln() | 等同于 write() 方法,不同的是在每个表达式之后写一个换行符。 |
属性和方法:
| 属性 / 方法 | 描述 |
|---|---|
| element.accessKey | 设置或返回accesskey一个元素 |
| element.addEventListener() | 向指定元素添加事件句柄 |
| element.appendChild() | 为元素添加一个新的子元素 |
| element.attributes | 返回一个元素的属性数组 |
| element.childNodes | 返回元素的一个子节点的数组 |
| element.children | 返回元素的子元素的集合 |
| element.classList | 返回元素的类名,作为 DOMTokenList 对象。 |
| element.className | 设置或返回元素的class属性 |
| element.clientTop | 表示一个元素的顶部边框的宽度,以像素表示。 |
| element.clientLeft | 表示一个元素的左边框的宽度,以像素表示。 |
| element.clientHeight | 在页面上返回内容的可视高度(高度包含内边距(padding),不包含边框(border),外边距(margin)和滚动条) |
| element.clientWidth | 在页面上返回内容的可视宽度(宽度包含内边距(padding),不包含边框(border),外边距(margin)和滚动条) |
| element.cloneNode() | 克隆某个元素 |
| element.compareDocumentPosition() | 比较两个元素的文档位置。 |
| element.contentEditable | 设置或返回元素的内容是否可编辑 |
| element.dir | 设置或返回一个元素中的文本方向 |
| element.firstElementChild | 返回元素的第一个子元素 |
| element.firstChild | 返回元素的第一个子节点 |
| element.focus() | 设置文档或元素获取焦点 |
| element.getAttribute() | 返回指定元素的属性值 |
| element.getAttributeNode() | 返回指定属性节点 |
| element.getElementsByTagName() | 返回指定标签名的所有子元素集合。 |
| element. getElementsByClassName() | 返回文档中所有指定类名的元素集合,作为 NodeList 对象。 |
| element.getFeature() | 返回指定特征的执行APIs对象。 |
| element.getUserData() | 返回一个元素中关联键值的对象。 |
| element.hasAttribute() | 如果元素中存在指定的属性返回 true,否则返回false。 |
| element.hasAttributes() | 如果元素有任何属性返回true,否则返回false。 |
| element.hasChildNodes() | 返回一个元素是否具有任何子元素 |
| element.hasFocus() | 返回布尔值,检测文档或元素是否获取焦点 |
| element.id | 设置或者返回元素的 id。 |
| element.innerHTML | 设置或者返回元素的内容。 |
| element.insertBefore() | 现有的子元素之前插入一个新的子元素 |
| element.isContentEditable | 如果元素内容可编辑返回 true,否则返回false |
| element.isDefaultNamespace() | 如果指定了namespaceURI 返回 true,否则返回 false。 |
| element.isEqualNode() | 检查两个元素是否相等 |
| element.isSameNode() | 检查两个元素所有有相同节点。 |
| element.isSupported() | 如果在元素中支持指定特征返回 true。 |
| element.lang | 设置或者返回一个元素的语言。 |
| element.lastChild | 返回最后一个子节点 |
| element.lastElementChild | 返回指定元素的最后一个子元素 |
| element.matches() | 如果元素匹配指定的 CSS 选择器,matches() 方法就返回 true,否则返回 false。 |
| element.namespaceURI | 返回命名空间的 URI。 |
| element.nextSibling | 返回该元素紧跟的一个节点 |
| element.nextElementSibling | 返回指定元素之后的下一个兄弟元素(相同节点树层中的下一个元素节点)。 |
| element.nodeName | 返回元素的标记名(大写) |
| element.nodeType | 返回元素的节点类型 |
| element.nodeValue | 返回元素的节点值 |
| element.normalize() | 使得此成为一个”normal”的形式,其中只有结构(如元素,注释,处理指令,CDATA节和实体引用)隔开Text节点,即元素(包括属性)下面的所有文本节点,既没有相邻的文本节点也没有空的文本节点 |
| element.offsetHeight | 返回任何一个元素的高度包括边框(border)和内边距(padding),但不包含外边距(margin) |
| element.offsetWidth | 返回元素的宽度,包括边框(border)和内边距(padding),但不包含外边距(margin) |
| element.offsetLeft | 返回当前元素的相对水平偏移位置的偏移容器 |
| element.offsetParent | 返回元素的偏移容器 |
| element.offsetTop | 返回当前元素的相对垂直偏移位置的偏移容器 |
| element.ownerDocument | 返回元素的根元素(文档对象) |
| element.parentNode | 返回元素的父节点 |
| element.previousSibling | 返回某个元素紧接之前元素 |
| element.previousElementSibling | 返回指定元素的前一个兄弟元素(相同节点树层中的前一个元素节点)。 |
| element.querySelector() | 返回匹配指定 CSS 选择器元素的第一个子元素 |
| document.querySelectorAll() | 返回匹配指定 CSS 选择器元素的所有子元素节点列表 |
| element.removeAttribute() | 从元素中删除指定的属性 |
| element.removeAttributeNode() | 删除指定属性节点并返回移除后的节点。 |
| element.removeChild() | 删除一个子元素 |
| element.removeEventListener() | 移除由 addEventListener() 方法添加的事件句柄 |
| element.replaceChild() | 替换一个子元素 |
| element.scrollHeight | 返回整个元素的高度(包括带滚动条的隐蔽的地方) |
| element.scrollLeft | 返回当前视图中的实际元素的左边缘和左边缘之间的距离 |
| element.scrollTop | 返回当前视图中的实际元素的顶部边缘和顶部边缘之间的距离 |
| element.scrollWidth | 返回元素的整个宽度(包括带滚动条的隐蔽的地方) |
| element.setAttribute() | 设置或者改变指定属性并指定值。 |
| element.setAttributeNode() | 设置或者改变指定属性节点。 |
| element.setIdAttribute() | |
| element.setIdAttributeNode() | |
| element.setUserData() | 在元素中为指定键值关联对象。 |
| element.style | 设置或返回元素的样式属性 |
| element.tabIndex | 设置或返回元素的标签顺序。 |
| element.tagName | 作为一个字符串返回某个元素的标记名(大写) |
| element.textContent | 设置或返回一个节点和它的文本内容 |
| element.title | 设置或返回元素的title属性 |
| element.toString() | 一个元素转换成字符串 |
| nodelist.item() | 返回某个元素基于文档树的索引 |
| nodelist.length | 返回节点列表的节点数目。 |