作者:hacker 日期:2022-08-05 分类:网络教程
closewindow openit validate 三个函数都是在一个级别,都是全局函数,
加载页面之后,closewindow openit validate, 三个函数都会被执行一遍;
而你的openit()函数,有嵌套调用了validate(),所以会弹出alert()两次提示~~
alert可以出现两个按钮,操作方法如下:
1、首先创建一个HTML文件,结构如下图所示。
2、开始写代码,先写第一句alert消息提示框:scriptalert('你好,2017');/script。
3、再写第二句,或者说这是第二种写法,如下图所示。
4、运行结果:并没有一次性将对话框都弹出,而是一个个弹出,按照代码书写的顺序弹出的。
5、都按确定之后,就继续执行程序了。
alert 不是 js 核心的函数。
js 一共 7+ 个全局函数:escape( )、eval( )、isFinite( )、isNaN( )、parseFloat( )、parseInt( )、unescape( )…… 但是不包括 alert。
alert 是 BOM 中的成员函数,具体说是 window.alert。
对话框显示在最前,并且禁止了页面其他的操作 对话框有两种,一种是模态,一种是非模态。很显然 window.alert 函数弹出的对话框是模态的。由于 js 没有 IO(输入输出),所以浏览器的 window 对象提供了两个函数,alert(对应O),prompt (对应 I)。
不知道这算不算是HTML label标签的bug,之所以alert了两次,是因为你在给label控件注册事件的时候,它里面的input 控件好像也被注册上了同样的事件。
javascript里事件捕获的时候,是从外到内进行传递的,所以这两次alert第一次是在label控件上触发的,第二次是在input控件上触发的,最奇葩的就是明明只给外层的label注册的事件处理程序,但运行是外层lable跟内层input居然有了,所以会运行两次。 你可以这样测试看一下:
html
head
script language="javascript"
function Window_Load(){
var oBtn = document.getElementById("bbb");
oBtn.onclick = function(){
var src = event.srcElement || event.target;
alert(src.tagName);
}
}
/script
/head
body onload="Window_Load();"
label id="bbb"
input id="text1" type="checkbox" /自动登录
/label
/body
/html
具体为什么会这样,我查遍了资料,也没找到原因!也许就是label控件的一个bug吧,用div里面套input checkox 就不会有这个问题。
建议把input控件(复选框)放到label控件外面。感觉你可能要实现的是,在点击label里的文字的时候,也能同时对复选框进行点选。 这时只需要给label标签里加个for属性,属性值对应复选框的ID就好了:
html
head
script language="javascript"
function Window_Load(){
var oBtn = document.getElementById("text1");
oBtn.onclick = function(){
var src = event.srcElement || event.target;
alert(src.tagName);
}
}
/script
/head
body onload="Window_Load();"
input id="text1" type="checkbox" /
label id="bbb" for="text1" 自动登录 /label
/body
/html
你可以测测看看。
已有5位网友发表了看法:
访客 评论于 [2022-08-05 11:13:13] 回复
)。为什么alert了两次 不知道这算不算是HTML label标签的bug,之所以alert了两次,是因为你在给label控件注册事件的时候,它里面的input 控件好像也被注册上了同样的事件。 ja
访客 评论于 [2022-08-05 13:34:49] 回复
、js中alert函数的实现原理是什么?4、为什么alert了两次重复alert()两次提示,当我点击确定后,又弹出重复的消息框,本来一次就够了的,是什么原因啊?clos
访客 评论于 [2022-08-05 06:27:39] 回复
d="bbb" input id="text1" type="checkbox" /自动登录 /label /body/html具体为什么会这样,我查遍了资
访客 评论于 [2022-08-05 09:27:21] 回复
rt(对应O),prompt (对应 I)。为什么alert了两次 不知道这算不算是HTML label标签的bug,之所以alert了两次,是因为你在给label控件注册事件的时
访客 评论于 [2022-08-05 13:40:35] 回复
对话框有两种,一种是模态,一种是非模态。很显然 window.alert 函数弹出的对话框是模态的。由于 js 没有 IO(输入输出),所以浏览器的 window 对象提供了两个函数,alert(对应O),prompt (对应 I)。为什么a