JavaScript高级语法

81 阅读11分钟

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触发

image-20240905224835814转存失败,建议直接上传图片文件

节点.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返回节点列表的节点数目。