4.3.5、查找 HTML 父子
4.3.5.1、方法介绍
方法 描述
元素节点.parentNode 返回元素的父节点。
元素节点.parentElement 返回元素的父元素。
元素节点.childNodes 返回元素的一个子节点的数组(包含空白文本Text节点)。
元素节点.children 返回元素的一个子元素的集合(不包含空白文本Text节点)。
元素节点.firstChild 返回元素的第一个子节点(包含空白文本Text节点)。
元素节点.firstElementChild 返回元素的第一个子元素(不包含空白文本Text节点)。
元素节点.lastChild 返回元素的最后一个子节点(包含空白文本Text节点)。
元素节点.lastElementChild 返回元素的最后一个子元素(不包含空白文本Text节点)。
元素节点.previousSibling 返回某个元素紧接之前节点(包含空白文本Text节点)。
元素节点.previousElementSibling 返回指定元素的前一个兄弟元素(相同节点树层中的前一个元素节点)。
元素节点.nextSibling 返回某个元素紧接之后节点(包含空白文本Text节点)。
元素节点.nextElementSibling 返回指定元素的后一个兄弟元素(相同节点树层中的下一个元素节点)。
4.3.5.2、方法演示
案例演示:
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> </head> <body> <div id="box"> <ul id="ul"> <li><a href="https://www.baidu.com">我是超链接1</a></li> <li id="two"><a href="https://www.baidu.com">我是超链接2</a></li> <li><a href="https://www.baidu.com">我是超链接3</a></li> <li><a href="https://www.baidu.com">我是超链接4</a></li> </ul> </div> <!-- 在这里写JavaScript代码,因为JavaScript是由上到下执行的 --> <script> var box = document.getElementById("box"); var ul = document.getElementById("ul"); var two = document.getElementById("two"); console.log(ul.parentNode); console.log(ul.parentElement); console.log("==============="); console.log(box.childNodes); console.log(box.children); console.log("==============="); console.log(ul.firstChild); console.log(ul.firstElementChild); console.log(ul.lastChild); console.log(ul.lastElementChild); console.log("==============="); console.log(two.previousSibling); console.log(two.previousElementSibling); console.log(two.nextSibling); console.log(two.nextElementSibling); </script> </body> </html>
/
兼容性方法:
/*获取任意一个父级元素的第一个子元素*/ function getfirstElementChild(element) { if(element.firstElementChild) { return element.firstElementChild; } else { var node = element.firstChild; while(node && node.nodeType != 1) { node = node.nextSibling; } return node; } } /*获取任意一个父级元素的最后一个子元素*/ function getLastElementChild(element) { if(element.lastElementChild) { return element.lastElementChild; } else { var node = element.lastChild; while(node && node.nodeType != 1) { node = node.previousSibling; } return node; } } /*获取任意一个子元素的前一个兄弟元素*/ function getPreviousElementSibling(element) { if(element.previousElementSibling) { return element.previousElementSibling; } else { var node = element.previousSibling; while(node && node.nodeType != 1) { node = node.previousSibling; } return node; } } /*获取任意一个子元素的后一个兄弟元素*/ function getNextElementSibling(element) { if(element.nextElementSibling) { return element.nextElementSibling; } else { var node = element.nextSibling; while(node && node.nodeType != 1) { node = node.nextSibling; } return node; } }
案例演示:
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> </head> <body> <div id="container"> <p>前面的P标签</p> <b>加粗文本</b> <a href="https://www.baidu.com" id="a">百度一下</a> <i>斜体文本</i> <p>最后的P标签</p> </div> <!-- 在这里写JavaScript代码,因为JavaScript是由上到下执行的 --> <script> /*第一个子元素*/ var firstNode = getfirstElementChild(document.getElementById("container")); console.log(firstNode.innerHTML); /*最后一个子元素*/ var lastNode = getLastElementChild(document.getElementById("container")); console.log(lastNode.innerHTML); /*指定元素的前一个子元素*/ var node1 = getPreviousElementSibling(document.getElementById("a")); console.log(node1.innerHTML); /*指定元素的后一个子元素*/ var node2 = getNextElementSibling(document.getElementById("a")); console.log(node2.innerHTML); /*获取任意一个父级元素的第一个子元素*/ function getfirstElementChild(element) { if (element.firstElementChild) { return element.firstElementChild; } else { var node = element.firstChild; while (node && node.nodeType != 1) { node = node.nextSibling; } return node; } } /*获取任意一个父级元素的最后一个子元素*/ function getLastElementChild(element) { if (element.lastElementChild) { return element.lastElementChild; } else { var node = element.lastChild; while (node && node.nodeType != 1) { node = node.previousSibling; } return node; } } /*获取任意一个子元素的前一个兄弟元素*/ function getPreviousElementSibling(element) { if (element.previousElementSibling) { return element.previousElementSibling; } else { var node = element.previousSibling; while (node && node.nodeType != 1) { node = node.previousSibling; } return node; } } /*获取任意一个子元素的后一个兄弟元素*/ function getNextElementSibling(element) { if (element.nextElementSibling) { return element.nextElementSibling; } else { var node = element.nextSibling; while (node && node.nodeType != 1) { node = node.nextSibling; } return node; } } </script> </body> </html>
谷歌浏览器:
火狐浏览器:
IE5-IE11浏览器:
4.4、DOM文档事件
4.4.1、事件概述
HTML事件可以触发浏览器中的行为,比方说当用户点击某个 HTML 元素时启动一段 JavaScript。
4.4.2、窗口事件
由窗口触发该事件 (同样适用于 标签):
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> </head> <body> <!-- 在这里写JavaScript代码,因为JavaScript是由上到下执行的 --> <script> window.onblur = function () { console.log("窗口失去焦点"); }; </script> </body> </html>
案例演示2:当窗口获取焦点时,输出“窗口获取焦点”
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> </head> <body> <!-- 在这里写JavaScript代码,因为JavaScript是由上到下执行的 --> <script> window.onfocus = function () { console.log("窗口获取焦点"); }; </script> </body> </html>
案例演示3:当页面文档加载完成后,输出"Hello, World"
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> </head> <body> <!-- 在这里写JavaScript代码,因为JavaScript是由上到下执行的 --> <script> window.onload = function () { console.log("Hello,World"); }; </script> </body> </html>
案例演示4:当调整窗口大小时,输出"窗口大小正在改变"
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> </head> <body> <!-- 在这里写JavaScript代码,因为JavaScript是由上到下执行的 --> <script> window.onresize = function () { console.log("窗口大小正在改变"); }; </script> </body> </html>
4.4.3、表单事件
表单事件在HTML表单中触发 (适用于所有 HTML 元素,但该HTML元素需在form表单内):
案例演示1:当文本框获取焦点,文本框背景为红色,当文本框失去焦点,文本框背景为黄色
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> </head> <body> <form> <input type="text" id="text"> </form> <!-- 在这里写JavaScript代码,因为JavaScript是由上到下执行的 --> <script> var textInput = document.getElementById("text"); /* 当文本框获取焦点,文本框背景为红色 */ textInput.onfocus = function () { this.style.background = "red"; }; /* 当文本框失去焦点,文本框背景为绿色 */ textInput.onblur = function () { this.style.background = "green"; }; </script> </body> </html>
注意:这里为什么要用this,你不用this也可以,就直接textInput.style.background = "red";也不是不可以的,但是方法的调用规则就是谁调用this,this就指向谁,这样我们就可以简化代码了
案例演示2:当文本框内容改变时,鼠标离开文本框,自动将文本框的内容输出到控制台
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> </head> <body> <form> <input type="text" id="text"> </form> <!-- 在这里写JavaScript代码,因为JavaScript是由上到下执行的 --> <script> var textInput = document.getElementById("text"); /* 当文本框内容改变时,鼠标离开文本框,自动将文本框的内容输出到控制台 */ textInput.onchange = function () { console.log(this.value); }; </script> </body> </html>
案例演示3:当文本框内容改变时,立即将改变的内容输出到控制台
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> </head> <body> <form> <input type="text" id="text"> </form> <!-- 在这里写JavaScript代码,因为JavaScript是由上到下执行的 --> <script> var textInput = document.getElementById("text"); /* 当文本框内容改变时,立即将改变的内容输出到控制台 */ textInput.oninput = function () { console.log(this.value); }; </script> </body> </html>
例演示4:如果单击“submit”,则不填写文本字段,将发生警报消息
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> </head> <body> <form> <input type="text" id="text" required> <input type="submit" value="submit"> </form> <!-- 在这里写JavaScript代码,因为JavaScript是由上到下执行的 --> <script> var textInput = document.getElementById("text"); /* 如果单击“submit”,则不填写文本字段,将发生警报消息 */ textInput.oninvalid = function () { console.log("请您完善表单内容!"); }; </script> </body> </html>
案例演示5:当选中文本框的内容时,输出“您已经选择了文本框内容!”
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> </head> <body> <form> <input type="text" id="text"> </form> <!-- 在这里写JavaScript代码,因为JavaScript是由上到下执行的 --> <script> var textInput = document.getElementById("text"); /* 当选中文本框的内容时,输出“您已经选择了文本框内容!” */ textInput.onselect = function () { console.log("您已经选择了文本框内容!"); }; </script> </body> </html>
案例演示6:当提交表单的时候,在控制台输出“表单提交”
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> </head> <body> <form id="myform"> <input type="submit" id="submit"> </form> <!-- 在这里写JavaScript代码,因为JavaScript是由上到下执行的 --> <script> var myform = document.getElementById("myform"); /* 当提交表单的时候,在控制台输出“表单提交” */ myform.onsubmit = function () { console.log("表单提交"); return false;/* 用来阻止表单提交的,你不写它会跳转请求 */ }; </script> </body> </html>
4.4.4、键盘事件
通过键盘触发事件,类似用户的行为:
案例演示1:当键盘按下判断当前的按键是不是 a ,如果是就输出true,否则输出false
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> </head> <body> <!-- 在这里写JavaScript代码,因为JavaScript是由上到下执行的 --> <script> /* 当键盘按下判断当前的按键是不是 a ,如果是就输出true,否则输出false */ window.onkeydown = function (event) { /* 解决兼容性问题 */ event = event || window.event; if (event.keyCode == 65) { console.log("true"); } else { console.log("false"); } }; </script> </body> </html> 123456789101112131415161718192021222324
案例演示2:使div可以根据不同的方向键向不同的方向移动
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> </head> <body> <div id="box" style="width: 100px;height: 100px;background: red;position: absolute;"></div> <!-- 在这里写JavaScript代码,因为JavaScript是由上到下执行的 --> <script> var box = document.getElementById("box"); //为document绑定一个按键按下的事件 document.onkeydown = function (event) { event = event || window.event; // 定义移动速度 var speed = 10; // 选择移动方向 switch (event.keyCode) { case 37: box.style.left = box.offsetLeft - speed + "px"; break; case 39: box.style.left = box.offsetLeft + speed + "px"; break; case 38: box.style.top = box.offsetTop - speed + "px"; break; case 40: box.style.top = box.offsetTop + speed + "px"; break; } }; </script> </body> </html>
拓展知识:
当事件的响应函数被触发时,浏览器每次都会将一个事件对象作为实参传递进响应函数。
Event 对象代表事件的状态,比如事件在其中发生的元素、键盘按键的状态、鼠标的位置、鼠标的状态。
在IE8中,响应函数被触发时,浏览器不会传递事件对象,在IE8及以下的浏览器中,是将事件对象作为window对象的属性保存的。
解决事件对象的兼容性问题:event = event || window.event;
键鼠属性:
4.4.5、鼠标事件
通过鼠标触发事件,类似用户的行为:
案例演示1:创建一个正方形div,默认颜色为黑色,当鼠标移入div,背景颜色变为红色,当鼠标移出div,背景颜色变为绿色
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> </head> <body> <div id="box" style="width: 100px;height: 100px;background: black;"></div> <!-- 在这里写JavaScript代码,因为JavaScript是由上到下执行的 --> <script> var box = document.getElementById("box"); /* 当鼠标移入div,背景颜色变为红色 */ box.onmouseenter = function () { this.style.background = "red"; }; /* 当鼠标移出div,背景颜色变为绿色 */ box.onmouseleave = function () { this.style.background = "green"; }; </script> </body> </html>
案例演示2:编写一个通用的拖拽元素函数,创建两个div,进行拖拽演示,要求兼容IE8、火狐、谷歌等主流浏览器
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> </head> <body> <div id="box1" style="width: 100px;height: 100px;background: red;position: absolute;"></div> <div id="box2" style="width: 100px;height: 100px;background: green;position: absolute;"></div> <!-- 在这里写JavaScript代码,因为JavaScript是由上到下执行的 --> <script> var box1 = document.getElementById("box1"); var box2 = document.getElementById("box2"); drag(box1); drag(box2); /* * 提取一个专门用来设置拖拽的函数 * 参数:开启拖拽的元素 */ function drag(obj) { //当鼠标在被拖拽元素上按下时,开始拖拽 obj.onmousedown = function (event) { // 解决事件的兼容性问题 event = event || window.event; // 设置obj捕获所有鼠标按下的事件 /** * setCapture(): * 只有IE支持,但是在火狐中调用时不会报错, * 而如果使用chrome调用,它也会报错 */ obj.setCapture && obj.setCapture(); // obj的偏移量 鼠标.clentX - 元素.offsetLeft // obj的偏移量 鼠标.clentY - 元素.offsetTop var ol = event.clientX - obj.offsetLeft; var ot = event.clientY - obj.offsetTop; // 为document绑定一个鼠标移动事件 document.onmousemove = function (event) { // 解决事件的兼容性问题 event = event || window.event; // 当鼠标移动时被拖拽元素跟随鼠标移动 // 获取鼠标的坐标 var left = event.clientX - ol; var top = event.clientY - ot; // 修改obj的位置 obj.style.left = left + "px"; obj.style.top = top + "px"; }; // 为document绑定一个鼠标松开事件 document.onmouseup = function () { // 取消document的onmousemove事件 document.onmousemove = null; // 取消document的onmouseup事件 document.onmouseup = null; // 当鼠标松开时,取消对事件的捕获 obj.releaseCapture && obj.releaseCapture(); }; /* * 当我们拖拽一个网页中的内容时,浏览器会默认去搜索引擎中搜索内容, * 此时会导致拖拽功能的异常,这个是浏览器提供的默认行为, * 如果不希望发生这个行为,则可以通过return false来取消默认行为, * 但是这招对IE8不起作用 */ return false; }; } </script> </body> </html>
4.4.6、媒体事件
通过视频(videos),图像(images)或音频(audio) 触发该事件。
4.4.7、其它事件4.4.8、事件冒泡
事件的冒泡(Bubble):所谓的冒泡指的就是事件的向上传导,当后代元素上的事件被触发时,其祖先元素的相同事件也会被触发,在开发中大部分情况冒泡都是有用的,如果不希望发生事件冒泡可以通过事件对象来取消冒泡。
案例演示1:创建两个div,叠放在一起,分别绑定单击事件,点击最里边的div,会触发两个div的单击事件
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> <style> #div1 { width: 200px; height: 200px; background: pink; } #div2 { width: 100px; height: 100px; background: coral; } </style> </head> <body> <div id="div1"> 我是DIV1 <div id="div2"> 我是DIV2 </div> </div> <!-- 在这里写JavaScript代码,因为JavaScript是由上到下执行的 --> <script> var div1 = document.getElementById("div1"); var div2 = document.getElementById("div2"); // 为div1绑定单击事件 div1.onclick = function () { console.log("div1 的单击事件触发了!"); }; // 为div2绑定单击事件 div2.onclick = function () { console.log("div2 的单击事件触发了!"); }; </script> </body> </html>
案例演示2:创建两个div,叠放在一起,分别绑定单击事件,点击最里边的div,不会触发两个div的单击事件,只会触发自己的单击事件,这时候我们可以取消事件冒泡
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> <style> #div1 { width: 200px; height: 200px; background: pink; } #div2 { width: 100px; height: 100px; background: coral; } </style> </head> <body> <div id="div1"> 我是DIV1 <div id="div2"> 我是DIV2 </div> </div> <!-- 在这里写JavaScript代码,因为JavaScript是由上到下执行的 --> <script> var div1 = document.getElementById("div1"); var div2 = document.getElementById("div2"); // 为div1绑定单击事件 div1.onclick = function () { console.log("div1 的单击事件触发了!"); stopBubble(); }; // 为div2绑定单击事件 div2.onclick = function () { console.log("div2 的单击事件触发了!"); stopBubble(); }; // 取消事件冒泡 function stopBubble(event) { // 如果提供了事件对象,则这是一个非IE浏览器 if (event && event.stopPropagation) { // 因此它支持W3C的stopPropagation()方法 event.stopPropagation(); } else { // 否则,我们需要使用IE的方式来取消事件冒泡 window.event.cancelBubble = true; } } </script> </body> </html>
案例演示3:当点击a标签的时候,阻止a标签的默认跳转事件,采用事件阻止
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> <style> #div1 { width: 200px; height: 200px; background: pink; } #div2 { width: 100px; height: 100px; background: coral; } </style> </head> <body> <a href="https://www.baidu.com" id="a">打开百度,你就知道!</a> <!-- 在这里写JavaScript代码,因为JavaScript是由上到下执行的 --> <script> var a = document.getElementById("a"); // 为a绑定单击事件 a.onclick = function () { stopDefault(); }; // 阻止浏览器的默认行为 function stopDefault(event) { if (event && event.preventDefault) { // 阻止默认浏览器动作(W3C) event.preventDefault(); } else { // IE中阻止函数器默认动作的方式 window.event.returnValue = false; } return false; } </script> </body> </html>
4.4.9、事件委派
我们希望只绑定一次事件,即可应用到多个的元素上,即使元素是后添加的,我们可以尝试将其绑定给元素的共同的祖先元素,也就是事件的委派。事件的委派,是指将事件统一绑定给元素的共同的祖先元素,这样当后代元素上的事件触发时,会一直冒泡到祖先元素,从而通过祖先元素的响应函数来处理事件。事件委派是利用了事件冒泡,通过委派可以减少事件绑定的次数,提高程序的性能。
案例演示:为ul列表中的所有a标签都绑定单击事件
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> </head> <body> <ul id="u1"> <li><a href="javascript:;" class="link">超链接一</a></li> <li><a href="javascript:;" class="link">超链接二</a></li> <li><a href="javascript:;" class="link">超链接三</a></li> </ul> <!-- 在这里写JavaScript代码,因为JavaScript是由上到下执行的 --> <script> var u1 = document.getElementById("u1"); // 为ul绑定一个单击响应函数 u1.onclick = function (event) { event = event || window.event; // 如果触发事件的对象是我们期望的元素,则执行,否则不执行 if (event.target.className == "link") { console.log("我是ul的单击响应函数"); } }; </script> </body> </html>
4.4.10、事件绑定
我们以前绑定事件代码只能一个事件绑定一个函数,那我们要是想一个事件对应多个函数,并且不存在兼容性的问题该如何解决呢?
接下来,我会直接提供两个已经编写好的事件绑定和事件解绑的兼容性代码,如下:
/*为元素绑定事件兼容性代码*/ function addEventListener(element, type, fn) { if(element.addEventListener) { element.addEventListener(type, fn, false); } else if(element.attachEvent) { element.attachEvent("on" + type, fn); } else { element["on" + type] = fn; } } /*为元素解绑事件兼容性代码*/ function removeEventListener(element, type, fnName) { if(element.removeEventListener) { element.removeEventListener(type, fnName, false); } else if(element.detachEvent) { element.detachEvent("on" + type, fnName); } else { element["on" + type] = null; } }
案例演示:为按钮1的单击事件绑定两个函数,然后点击按钮2取消按钮1的单机事件绑定函数f1
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> </head> <body> <button id="btn1">按钮1</button> <button id="btn2">按钮2</button> <!-- 在这里写JavaScript代码,因为JavaScript是由上到下执行的 --> <script> function f1() { console.log("output1 ..."); }; function f2() { console.log("output2 ..."); }; // 为按钮1的单击事件绑定两个函数 addEventListener(document.getElementById("btn1"), "click", f1); addEventListener(document.getElementById("btn1"), "click", f2); // 点击按钮2取消按钮1的单机事件绑定函数f1 document.getElementById("btn2").onclick = function () { removeEventListener(document.getElementById("btn1"), "click", f1); }; /*为元素绑定事件兼容性代码*/ function addEventListener(element, type, fn) { if (element.addEventListener) { element.addEventListener(type, fn, false); } else if (element.attachEvent) { element.attachEvent("on" + type, fn); } else { element["on" + type] = fn; } } /*为元素解绑事件兼容性代码*/ function removeEventListener(element, type, fnName) { if (element.removeEventListener) { element.removeEventListener(type, fnName, false); } else if (element.detachEvent) { element.detachEvent("on" + type, fnName); } else { element["on" + type] = null; } } </script> </body> </html>
谷歌浏览器:
火狐浏览器:
IE8-IE11浏览器:
4.4.11、事件传播
事件的传播:关于事件的传播网景公司和微软公司有不同的理解
微软公司认为事件应该是由内向外传播,也就是当事件触发时,应该先触发当前元素上的事件,然后再向当前元素的祖先元素上传播,也就说事件应该在冒泡阶段执行。
网景公司认为事件应该是由外向内传播的,也就是当前事件触发时,应该先触发当前元素的最外层的祖先元素的事件,然后在向内传播给后代元素。
W3C综合了两个公司的方案,将事件传播分成了三个阶段:
捕获阶段:在捕获阶段时从最外层的祖先元素,向目标元素进行事件的捕获,但是默认此时不会触发事件
目标阶段:事件捕获到目标元素,捕获结束开始在目标元素上触发事件
冒泡阶段:事件从目标元素向它的祖先元素传递,依次触发祖先元素上的事件
注意:如果希望在捕获阶段就触发事件,可以将addEventListener()的第三个参数设置为true,一般情况下我们不会希望在捕获阶段触发事件,所以这个参数一般都是false,并且注意,IE8及以下的浏览器中没有捕获阶段,我们可以使用event.stopPropagation();取消事件传播。
第五章 JavaScript BOM
5.1、BOM概述
浏览器对象模型(BOM)使 JavaScript 有能力与浏览器"对话"。
浏览器对象模型(Browser Object Model (BOM))尚无正式标准。
由于现代浏览器已经(几乎)实现了 JavaScript 交互性方面的相同方法和属性,因此常被认为是BOM的方法和属性。
浏览器对象模型(BOM)可以使我们通过JS来操作浏览器,在BOM中为我们提供了一组对象,用来完成对浏览器的操作,常见的BOM对象如下:
Window:代表的是整个浏览器的窗口,同时window也是网页中的全局对象
Navigator:代表的当前浏览器的信息,通过该对象可以来识别不同的浏览器
Location:代表当前浏览器的地址栏信息,通过Location可以获取地址栏信息,或者操作浏览器跳转页面
History:代表浏览器的历史记录,可以通过该对象来操作浏览器的历史记录,由于隐私原因,该对象不能获取到具体的历史记录,只能操作浏览器向前或向后翻页,而且该操作只在当次访问时有效
Screen:代表用户的屏幕的信息,通过该对象可以获取到用户的显示器的相关的信息
这些BOM对象在浏览器中都是作为window对象的属性保存的,可以通过window对象来使用,也可以直接使用。
5.2、Window对象
5.2.1、弹出框
JavaScript 有三种类型的弹出框:警告框、确认框和提示框。
5.2.1.1、警告框
如果要确保信息传递给用户,通常会使用警告框。当警告框弹出时,用户将需要单击“确定”来继续。
语法
window.alert("sometext");
注意:window.alert() 方法可以不带 window 前缀来写。
5.2.1.2、确认框
如果您希望用户验证或接受某个东西,则通常使用“确认”框。
当确认框弹出时,用户将不得不单击“确定”或“取消”来继续进行。
如果用户单击“确定”,该框返回 true。如果用户单击“取消”,该框返回 false。
语法
window.confirm("sometext");
注意:window.confirm() 方法可以不带 window 前缀来编写。
实例
var r = confirm("请按按钮"); if (r == true) { x = "您按了确认!"; } else { x = "您按了取消!"; }
5.2.1.3、提示框
如果您希望用户在进入页面前输入值,通常会使用提示框。
当提示框弹出时,用户将不得不输入值后单击“确定”或点击“取消”来继续进行。
如果用户单击“确定”,该框返回输入值。如果用户单击“取消”,该框返回 NULL。
语法
window.prompt("sometext","defaultText");
window.prompt() 方法可以不带 window 前缀来编写。
实例
var person = prompt("请输入您的姓名", "比尔盖茨"); if (person != null) { console.log(person); }