编写Js代码时你是否厌烦了window.alert,window.confirm所弹出来单一的对话框?
接下来的日子里,我们一起来学习利用JS来开发属于自己的js对象。嘿嘿!
老鸟请移步别处,小弟不喜欢被批:)
一、 打造自己的alert()对象
实现难点:
1、利用何种方式模仿这个提示对话框?
2、如何在弹出对话框时,使网页中其他元素不可用
思路:
问题1:如何模仿?有API可调么?如何调呢?我比较生疏,不予采用调API;这里我选择div来制作这个效果
div比较熟。大家有其他的好方法,请赐教。
问题2:如何在弹出提示对话框的时候,使其他元素不可用呢?这个问题一时比较难解决。后来被人一语点醒,利用css来解决。
OK,开工吧,其实非常简单。
第一步,先建立一个htm文件,在里面利用js创建我们的提示对话框面板。
htm代码省略,只贴js代码
第2步:为他添加标题栏,关闭按钮和确定按钮,以及提示图片,也是按第1步的方法做。
完毕后的代码如下。
可是细心的您肯定又会发现,不对啊,window.alert弹出后,它后面的元素都不可用啊,那我们就进一步完善它吧
其实很简单,添加一个层,遮住它后面的元素就行咯。
在JS代码中添加下列代码

申明:
本文章代码未经过任何测试,本系列随笔为原创,转载请注明。
接下来的日子里,我们一起来学习利用JS来开发属于自己的js对象。嘿嘿!
老鸟请移步别处,小弟不喜欢被批:)
一、 打造自己的alert()对象
实现难点:
1、利用何种方式模仿这个提示对话框?
2、如何在弹出对话框时,使网页中其他元素不可用
思路:
问题1:如何模仿?有API可调么?如何调呢?我比较生疏,不予采用调API;这里我选择div来制作这个效果
div比较熟。大家有其他的好方法,请赐教。
问题2:如何在弹出提示对话框的时候,使其他元素不可用呢?这个问题一时比较难解决。后来被人一语点醒,利用css来解决。
OK,开工吧,其实非常简单。
第一步,先建立一个htm文件,在里面利用js创建我们的提示对话框面板。
htm代码省略,只贴js代码
1
function Msg()
2

{
3
//创建弹出对话框面板
4
var dvMsg = document.createElement("div");
5
//设未绝对定位很重要
6
dvMsg.style.position = "absolute";
7
dvMsg.setAttribute('id','msg');
8
dvMsg.style.width = "400px";
9
dvMsg.style.height = "100px";
10
dvMsg.style.top="40%";
11
dvMsg.style.left="30%";
12
dvMsg.style.background = "white";
13
dvMsg.style.border="1px solid #6699dd";
14
dvMsg.style.zIndex = "1112";
15
//添加至body中
16
document.body.appendChild(dvMsg);
17
}
OK,面板创建完毕,如果你调用该函数的话,就会发现,在页面中就会多出一个蓝色边框的块
2



3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

第2步:为他添加标题栏,关闭按钮和确定按钮,以及提示图片,也是按第1步的方法做。
完毕后的代码如下。
1
function Msg(str)
2
//创建提示对话框面板
3
var dvMsg = document.createElement("div");
4
dvMsg.style.position = "absolute";
5
dvMsg.setAttribute('id','msg');
6
dvMsg.style.width = "400px";
7
dvMsg.style.height = "100px";
8
dvMsg.style.top="40%";
9
dvMsg.style.left="30%";
10
dvMsg.style.background = "white";
11
dvMsg.style.border="1px solid #6699dd";
12
dvMsg.style.zIndex = "1112";
13
document.body.appendChild(dvMsg);
14
//标题栏
15
var title = document.createElement("div");
16
title.style.position = "absolute";
17
title.setAttribute('id','title');
18
title.style.width = "400px";
19
title.style.height = "10px";
20
title.style.top= "0";
21
title.style.filter = "progid:DXImageTransform.Microsoft.Alpha(style=1,opacity=100,finishOpacity=100%)";
22
title.style.zIndex = "1113";
23
title.innerHTML = "<font size='2'>提示</font>";
24
title.style.background = "#6699ff";
25
26
//提示图片
27
var imgErr = document.createElement("img");
28
imgErr.src = "pic/err.gif";
29
imgErr.style.marginLeft = "15px";
30
imgErr.style.marginTop = "30px";
31
imgErr.style.position = "absolute";
32
33
//关闭图片
34
var imgClo = document.createElement("img");
35
imgClo.src = "pic/delete.gif";
36
imgClo.style.marginLeft = "378px";
37
imgClo.style.marginTop = "0px";
38
imgClo.style.position = "absolute";
39
imgClo.style.zIndex = "1115";
40
imgClo.style.cursor = "hand";
41
imgClo.onclick = function ()
42
{
43
document.body.removeChild(dv);
44
document.body.removeChild(dvMsg);
45
}
46
//确定按钮
47
var btn = document.createElement("input");
48
btn.id = "ok";
49
btn.type= "button";
50
btn.value = "确 定";
51
btn.style.marginTop = "75px";
52
btn.style.marginLeft = "43%";
53
btn.style.position = "absolute";
54
btn.style.border = "1px solid #6699ff";
55
btn.style.background = "lightblue";
56
//点击关闭
57
btn.onclick = function ()
58
{
59
document.body.removeChild(dv);
60
document.body.removeChild(dvMsg);
61
}
62
//响应回车
63
btn.onkeydown = function ()
64
{
65
if (event.keyCode == "13")
66
{
67
document.body.removeChild(dv);
68
document.body.removeChild(dvMsg);
69
}
70
}
71
var msg = document.createElement("div");
72
msg.style.marginTop = "30px";
73
msg.style.marginLeft = "18%";
74
msg.style.position = "absolute";
75
msg.style.width = "300px";
76
msg.innerHTML = str;
77
78
msg.style.wordWrap = "break-word";
79
document.getElementById('msg').appendChild(msg);
80
document.getElementById('msg').appendChild(btn);
81
document.getElementById('msg').appendChild(imgErr);
82
document.getElementById('msg').appendChild(imgClo);
83
document.getElementById('msg').appendChild(title);
84
document.getElementById('ok').focus();
85
}
OK 现在调用这个函数,是不是我们自己的提示对话框就出来了??
2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42



43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58



59

60

61

62

63

64



65

66



67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

可是细心的您肯定又会发现,不对啊,window.alert弹出后,它后面的元素都不可用啊,那我们就进一步完善它吧
其实很简单,添加一个层,遮住它后面的元素就行咯。
在JS代码中添加下列代码
1
/**//*
2
Copyright by:LRH http://hunanboy.cnblogs.com
3
*/
4
//确定遮罩层的高度,宽度
5
var h = screen.availHeight;
6
var w = screen.availHeight;
7
//创建遮罩层,它的主要作用就是使网页中的其他元素不可用。
8
var dv = document.createElement("div");
9
dv.setAttribute('id','bg');
10
//设置样式
11
dv.style.height = h + "px";
12
dv.style.width = w + "px";
13
dv.style.zIndex = "1111";
14
dv.style.filter = "progid:DXImageTransform.Microsoft.Alpha(style=2,opacity=1,finishOpacity=100%)";
15
dv.style.background = "red";
16
dv.style.top = 0;
17
//设为绝对定位很重要
18
dv.style.position = "absolute";
19
//将该元素添加至body中
20
document.body.appendChild(dv);
好啦,运行界面就是下面这个样子的。下一节制作confirm对象

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20


申明:
本文章代码未经过任何测试,本系列随笔为原创,转载请注明。