2008年5月20日星期二

MySQL日期函数全攻略

对于每个类型拥有的值范围以及并且指定日期何时间值的有效格式的描述见7.3.6 日期和时间类型。

这里是一个使用日期函数的例子。下面的查询选择了所有记录,其date_col的值是在最后30天以内:

mysql> SELECT something FROM table PHPChina 开源社区门户 Q;P q A7c7S \ ~

WHERE TO_DAYS(NOW()) - TO_DAYS(date_col) <= 30;

DAYOFWEEK(date) PHPChina 开源社区门户 { R h m"a-b6n

返回日期date的星期索引(1=星期天,2=星期一, ……7=星期六)。这些索引值对应于ODBC标准。

3e Y3r Y h0mysql> select DAYOFWEEK('1998-02-03');

D P p0W l T:v N { U v0-> 3

WEEKDAY(date) PHPChina 开源社区门户 p(J6w D l6} ^&p#r D

返回date的星期索引(0=星期一,1=星期二, ……6= 星期天)。

~1b g&h+q U e7O P,m s G- 0mysql> select WEEKDAY('1997-10-04 22:23:00');

0D [ [,v*~6{ E D A0-> 5 PHPChina 开源社区门户0^(e J'T4W3]

mysql> select WEEKDAY('1997-11-05'); PHPChina 开源社区门户 A o8N ` Y1@ j5V.g

-> 2

DAYOFMONTH(date) PHPChina 开源社区门户.[ S s u A*])T g4t

返回date的月份中日期,在1到31范围内。

\ P T:K8j!b,` I0mysql> select DAYOFMONTH('1998-02-03'); PHPChina 开源社区门户!O1x o o R'T {

-> 3

DAYOFYEAR(date) PHPChina 开源社区门户 ` u:_ }6{ o o

返回date在一年中的日数, 在1到366范围内。

m ~* R L$B Z2O0mysql> select DAYOFYEAR('1998-02-03');

d ]0f D$r m s G0-> 34

MONTH(date) PHPChina 开源社区门户3^(z \5u p D u P1v

返回date的月份,范围1到12。

(r9{$` r A F z;e0mysql> select MONTH('1998-02-03'); PHPChina 开源社区门户 X O8c z"@/~ E u

-> 2

DAYNAME(date)

x6v!V X%w6s [ q @ H0返回date的星期名字。 PHPChina 开源社区门户0[4}#_ C G B8w

mysql> select DAYNAME("1998-02-05"); PHPChina 开源社区门户 h J)D W*] l f

-> 'Thursday'

MONTHNAME(date)

8Q y I k1m t q!y \0返回date的月份名字。 PHPChina 开源社区门户,]y#l C l0d$h ^

mysql> select MONTHNAME("1998-02-05");

^:L:W J \0-> 'February'

QUARTER(date) PHPChina 开源社区门户 `&Z.n7r9E

返回date一年中的季度,范围1到4。 PHPChina 开源社区门户 _ [ B @:v _

mysql> select QUARTER('98-04-01');

%p ] J [ a/o a0R*^!t'C0-> 2

WEEK(date)

_4x P M"m [ i0 

_9c h*W o b ~+Q0WEEK(date,first) PHPChina 开源社区门户 T R 4G n A$~

对于星期天是一周的第一天的地方,有一个单个参数,返回date的周数,范围在0到52。2个参数形式WEEK()允许你指定星期是否开始于星期天或星期一。如果第二个参数是0,星期从星期天开始,如果第二个参数是1,从星期一开始。 PHPChina 开源社区门户 N7`;F"s4R4`9H x

mysql> select WEEK('1998-02-20');

k8[ x+-d X T q0-> 7 PHPChina 开源社区门户 v:@ D }%] i j @

mysql> select WEEK('1998-02-20',0);

v ]$c8a6S+]0-> 7 PHPChina 开源社区门户 m ] l:z _ i

mysql> select WEEK('1998-02-20',1);

v b S+Q1W&H)j+t0-> 8

YEAR(date) PHPChina 开源社区门户'[1a8_ eE r \

返回date的年份,范围在1000到9999。

"o F,m `/C u b `!0mysql> select YEAR('98-02-03');

t O$R { f ^ T c7J0-> 1998

HOUR(time) PHPChina 开源社区门户 p,K$S+t Z z'f \ S;p

返回time的小时,范围是0到23。 PHPChina 开源社区门户 p+V Q" c'P

mysql> select HOUR('10:05:03'); PHPChina 开源社区门户3z)q w K k;C B

-> 10

MINUTE(time)

#G ~ { F n0
返回time的分钟,范围是0到59。 PHPChina 开源社区门户4}3u)`&x k b/b d!n

mysql> select MINUTE('98-02-03 10:05:03');

p L }'S+F%^ z0-> 5

SECOND(time) PHPChina 开源社区门户 } [1w'{ ] R$_ b

回来time的秒数,范围是0到59。 PHPChina 开源社区门户'O Y.#v$c

mysql> select SECOND('10:05:03'); PHPChina 开源社区门户 H"f G"n0m

-> 3

PERIOD_ADD(P,N)

.m.p r i ^1Z(D P.q k F P0增加N个月到阶段P(以格式YYMM或YYYYMM)。以格式YYYYMM返回值。注意阶段参数P不是日期值。 PHPChina 开源社区门户$m6{ f7G1q M j

mysql> select PERIOD_ADD(9801,2);

1I+o m)i z S v0-> 199803

PERIOD_DIFF(P1,P2) PHPChina 开源社区门户9m7a*N E R "J f J5 Q

返回在时期P1和P2之间月数,P1和P2应该以格式YYMM或YYYYMM。注意,时期参数P1和P2不是日期值。 PHPChina 开源社区门户 u F#Y3m/r R*K5~

mysql> select PERIOD_DIFF(9802,199703);

y$y B E B4A:p L _7Q0-> 11

DATE_ADD(date,INTERVAL expr type) PHPChina 开源社区门户 J#v,k ` R 5G K

 

4M J(Z \6W/p(M a O0DATE_SUB(date,INTERVAL expr type)

)n-[!A/x E$g8~0 

%J1G9W!` D M/Y4}5\ S0ADDDATE(date,INTERVAL expr type)

L } _9L o4H0  PHPChina 开源社区门户+} .L _6F);c J

SUBDATE(date,INTERVAL expr type) PHPChina 开源社区门户 R R-Q ^ Q w

这些功能执行日期运算。对于MySQL 3.22,他们是新的。ADDDATE()和SUBDATE()是DATE_ADD()和DATE_SUB()的同义词。PHPChina 开源社区门户 l F-m L T

在MySQL 3.23中,你可以使用+和-而不是DATE_ADD()和DATE_SUB()。(见例子)date是一个指定开始日期的PHPChina 开源社区门户 e J F7X B w. 4Q

DATETIME或DATE值,expr是指定加到开始日期或从开始日期减去的间隔值一个表达式,expr是一个字符串;它可以以

y x6s Y8d#]-@,q A0一个“-”开始表示负间隔。type是一个关键词,指明表达式应该如何被解释。EXTRACT(type FROM date)函数从日期PHPChina 开源社区门户 k:a _ c L0l P

中返回“type”间隔。下表显示了type和expr参数怎样被关联: type值含义 期望的expr格式 PHPChina 开源社区门户 k(\ z F {

SECOND 秒 SECONDS PHPChina 开源社区门户 C m g"i6U n3["u `

MINUTE 分钟 MINUTES

D o* w(Z5r'R0HOUR 时间 HOURS PHPChina 开源社区门户 p p(W N

DAY 天 DAYS PHPChina 开源社区门户 Q%H }5e O

MONTH 月 MONTHS PHPChina 开源社区门户 g [ c t A/n

YEAR 年 YEARS PHPChina 开源社区门户 a O.Q/H _*S0v9S*z

MINUTE_SECOND 分钟和秒 "MINUTES:SECONDS"

b {(c-g 0A$ 5p0HOUR_MINUTE 小时和分钟 "HOURS:MINUTES"

.Q B i0X2y0DAY_HOUR 天和小时 "DAYS HOURS"

%@ A9d)x _'G c t6` G0YEAR_MONTH 年和月 "YEARS-MONTHS"

N/N a {-S d0HOUR_SECOND 小时, 分钟, "HOURS:MINUTES:SECONDS"

c:Y9T 4N M0DAY_MINUTE 天, 小时, 分钟 "DAYS HOURS:MINUTES" PHPChina 开源社区门户 G [ h F e$f

DAY_SECOND 天, 小时, 分钟, 秒 "DAYS HOURS:MINUTES:SECONDS"

MySQL在expr格式中允许任何标点分隔符。表示显示的是建议的分隔符。如果date参数是一个DATE值并且你的计算仅仅包含YEAR、MONTH和DAY部分(即,没有时间部分),结果是一个DATE值。否则结果是一个DATETIME值。

mysql> SELECT "1997-12-31 23:59:59" + INTERVAL 1 SECOND; PHPChina 开源社区门户5\4l J d ` x h

-> 1998-01-01 00:00:00 PHPChina 开源社区门户6j#v ~:j }~

mysql> SELECT INTERVAL 1 DAY + "1997-12-31"; PHPChina 开源社区门户2J j {3v L

-> 1998-01-01

Q4[3D6i Q e k6x.t0mysql> SELECT "1998-01-01" - INTERVAL 1 SECOND; PHPChina 开源社区门户 5Q q dL V F

-> 1997-12-31 23:59:59

6e!i q a I"a s 0mysql> SELECT DATE_ADD("1997-12-31 23:59:59", PHPChina 开源社区门户 d&l b/W i

INTERVAL 1 SECOND);

3s Q [ E-L*O j T.l0-> 1998-01-01 00:00:00

tB E G I N j5x0mysql> SELECT DATE_ADD("1997-12-31 23:59:59", PHPChina 开源社区门户G b4\7} u

INTERVAL 1 DAY); PHPChina 开源社区门户#g;l&F e h9P

-> 1998-01-01 23:59:59

$T R X,o5E&S z c ] V0mysql> SELECT DATE_ADD("1997-12-31 23:59:59", PHPChina 开源社区门户 _ @ { h Q B'Q%\ V(}8T

INTERVAL "1:1" MINUTE_SECOND); PHPChina 开源社区门户;\9H3F+g y Y q7L N

-> 1998-01-01 00:01:00 PHPChina 开源社区门户"Q L M)D0X ` l

mysql> SELECT DATE_SUB("1998-01-01 00:00:00",

9t;~.w h&} H Z0INTERVAL "1 1:1:1" DAY_SECOND);

'a'z2N J J l u+V w i0-> 1997-12-30 22:58:59

5B2V I o r 0mysql> SELECT DATE_ADD("1998-01-01 00:00:00", PHPChina 开源社区门户*^:y j8_1e"L(W H.[

INTERVAL "-1 10" DAY_HOUR);

R:U"g \ i6a z H3S0-> 1997-12-30 14:00:00 PHPChina 开源社区门户5z9z#r+h C m

mysql> SELECT DATE_SUB("1998-01-02", INTERVAL 31 DAY);

p,f9^A J N C%W P R0-> 1997-12-02 PHPChina 开源社区门户 r w @/x B D/b c

mysql> SELECT EXTRACT(YEAR FROM "1999-07-02");

U H d v9}'T r j0-> 1999

} Z5k \ m ]0mysql> SELECT EXTRACT(YEAR_MONTH FROM "1999-07-02 01:02:03"); PHPChina 开源社区门户 f m D q H ` ~0G L

-> 199907 PHPChina 开源社区门户"L Y m"B y-t n h

mysql> SELECT EXTRACT(DAY_MINUTE FROM "1999-07-02 01:02:03");

\'d2} x K$T0-> 20102

如果你指定太短的间隔值(不包括type关键词期望的间隔部分),MySQL假设你省掉了间隔值的最左面部分。例如,如果你指定一个type是DAY_SECOND,值expr被希望有天、小时、分钟和秒部分。如果你象"1:10"这样指定值,MySQL假设日子和小时部分是丢失的并且值代表分钟和秒。换句话说,"1:10" DAY_SECOND以它等价于"1:10" MINUTE_SECOND的方式解释,这对那MySQL解释TIME值表示经过的时间而非作为一天的时间的方式有二义性。如果你使用确实不正确的日期,结果是NULL。如果你增加MONTH、YEAR_MONTH或YEAR并且结果日期大于新月份的最大值天数,日子在新月用最大的天调整。

mysql> select DATE_ADD('1998-01-30', Interval 1 month); PHPChina 开源社区门户 a ^ F4Q r U&b S

-> 1998-02-28

注意,从前面的例子中词INTERVAL和type关键词不是区分大小写的。 PHPChina 开源社区门户 E2P F y q z



[ x6X)[ A6@ [4J o0TO_DAYS(date) PHPChina 开源社区门户 T8b i$^ z/e e-w n

给出一个日期date,返回一个天数(从0年的天数)。

M B w S \*E)A5Z c0mysql> select TO_DAYS(950501); PHPChina 开源社区门户 {8] ~5K Y(.B(E

-> 728779 PHPChina 开源社区门户 x([ } o f { w ^

mysql> select TO_DAYS('1997-10-07');

,S b s7K \9g:N0-> 729669

TO_DAYS()PHPChina 开源社区门户7 u d'I9t y x

不打算用于使用格列高里历(1582)出现前的值。

FROM_DAYS(N)

B%s C w z7\ Z0
给出一个天数N,返回一个DATE值。

n b0R+J y0mysql> select FROM_DAYS(729669);

Q8z u F+g J B %A0-> '1997-10-07'

DATE_FORMAT(date,format) PHPChina 开源社区门户+D ` y q w&n

根据format字符串格式化date值。下列修饰符可以被用在format字符串中: %M 月名字(January……December) PHPChina 开源社区门户 \ H'g"v&i

%W 星期名字(Sunday……Saturday)

.U*H:K e%p ~ \0a:w _#V0%D 有英语前缀的月份的日期(1st, 2nd, 3rd, 等等。)

:N2g v j ~ p l,c0%Y 年, 数字, 4 位

p)] c;p p A v-@0%y 年, 数字, 2 位

] y s Y \5v {0%a 缩写的星期名字(Sun……Sat) PHPChina 开源社区门户#v J&r l z A)D u6K

%d 月份中的天数, 数字(00……31) PHPChina 开源社区门户&n J ](d7d- ,[ q0W

%e 月份中的天数, 数字(0……31) PHPChina 开源社区门户$F0P q1{.Y W

%m 月, 数字(01……12)

:g z#_ H5[ n I0%c 月, 数字(1……12)

} k-D%e'u E y m G q+h0%b 缩写的月份名字(Jan……Dec) PHPChina 开源社区门户*B0w @ e W8`

%j 一年中的天数(001……366) PHPChina 开源社区门户!c y$v0[$` v

%H 小时(00……23) PHPChina 开源社区门户 a&^,W k P$K I(y6~

%k 小时(0……23)

.[;r n1v1@9W0%h 小时(01……12)

} a!s7G#R o _0S n9H0I C0%I 小时(01……12)

5LT e0_!@ M S v K*t0%l 小时(1……12) PHPChina 开源社区门户"t5X w R$\ i ^ E'v

%i 分钟, 数字(00……59) PHPChina 开源社区门户 W& a P S4r h

%r 时间,12 小时(hh:mm:ss [AP]M)

_ ] } k*J z } ^"M0%T 时间,24 小时(hh:mm:ss)

S'U(z c p0%S 秒(00……59)

f9x;o \ G0%s 秒(00……59)

4t(n0Y%F/Q j U {0%p AM或PM PHPChina 开源社区门户!r#\ } r j R.O;p

%w 一个星期中的天数(0=Sunday ……6=Saturday )

F V3K"@ M q y/X0%U 星期(0……52), 这里星期天是星期的第一天 PHPChina 开源社区门户 F$O7` e q"l

%u 星期(0……52), 这里星期一是星期的第一天

+H \5G%k.T } g4X$ 2u#]0%% 一个文字“%”。

所有的其他字符不做解释被复制到结果中。

mysql> select DATE_FORMAT('1997-10-04 22:23:00', '%W %M %Y');

n `1y } r#U n&~9N0-> 'Saturday October 1997'

g `1CU':b0mysql> select DATE_FORMAT('1997-10-04 22:23:00', '%H:%i:%s');

Q G7z,V#V ~/R'N0-> '22:23:00'

1Z a*^ z8X A)R"P0mysql> select DATE_FORMAT('1997-10-04 22:23:00',

)o%X J&P3-S( @.P Y b0'%D %y %a %d %m %b %j');

p'g l"{ i0-> '4th 97 Sat 04 10 Oct 277'

3A n ` z* { Q X0mysql> select DATE_FORMAT('1997-10-04 22:23:00', PHPChina 开源社区门户 ^ w L z%p f S

'%H %k %I %r %T %S %w');

$L [4a8X L i z X k0-> '22 22 10 10:23:00 PM 22:23:00 00 6'

'V:N a H S)I0MySQL3.23中,在格式修饰符字符前需要%。在MySQL更早的版本中,%是可选的。

TIME_FORMAT(time,format)

Q `!Z B B P5t I:t0这象上面的DATE_FORMAT()函数一样使用,但是format字符串只能包含处理小时、分钟和秒的那些格式修饰符。其他修饰符产生一个NULL值或0。 PHPChina 开源社区门户 k W D:E9R S p G*J u



(@ `(n v k8wJ'N k f y0CURDATE() PHPChina 开源社区门户%i7^ W"g `;F a8X z L ] g

  PHPChina 开源社区门户)W3i c j*e

CURRENT_DATE

4k s,d,h U C7c a0以'YYYY-MM-DD'或YYYYMMDD格式返回今天日期值,取决于函数是在一个字符串还是数字上下文被使用。 PHPChina 开源社区门户 P' l9^ s c%a lg T

mysql> select CURDATE();

+r q w w3x0-> '1997-12-15'

~4i3o2W/V0mysql> select CURDATE() + 0;

*8` O y,U6O)Q f0-> 19971215

CURTIME() PHPChina 开源社区门户 r"k9v \0}%o1x {

 

2o O B 1U Z ot0CURRENT_TIME PHPChina 开源社区门户1y I1_$k x

以'HH:MM:SS'或HHMMSS格式返回当前时间值,取决于函数是在一个字符串还是在数字的上下文被使用。

8k3 R i p-m7e'X r0mysql> select CURTIME();

\:D;A D ~$j k,s#y,I&o0-> '23:50:26'

2k( R4a:P J0mysql> select CURTIME() + 0; PHPChina 开源社区门户 E U V ~ i.e5Z c m h

-> 235026

NOW() PHPChina 开源社区门户 y X2\ dc B

 

#Z k4n3J p9t { k Q;B4g0SYSDATE()

l f }0A ad'@0  PHPChina 开源社区门户0_9B \ D.y#D0Y

CURRENT_TIMESTAMP PHPChina 开源社区门户(E r D S2};a E,U J

以'YYYY-MM-DD HH:MM:SS'或YYYYMMDDHHMMSS格式返回当前的日期和时间,取决于函数是在一个字符串还是在数字的上下文被使用。 PHPChina 开源社区门户 w C$d x! g$~"q

mysql> select NOW();

B/Q v Z"R f W \ 0-> '1997-12-15 23:50:26' PHPChina 开源社区门户.R G r*Y _ [ !@ l ~

mysql> select NOW() + 0; PHPChina 开源社区门户 v h Q$r z!}1} n

-> 19971215235026

UNIX_TIMESTAMP() PHPChina 开源社区门户 W9m7F q _$e W h

 

j G+W1{ z F0UNIX_TIMESTAMP(date)

.Y6]/F c p#K7a0
如果没有参数调用,返回一个Unix时间戳记(从'1970-01-01 00:00:00'GMT开始的秒数)。如果UNIX_TIMESTAMP()用一个date参数被调用,它返回从'1970-01-01 00:00:00' GMT开始的秒数值。date可以是一个DATE字符串、一个DATETIME字符串、一个TIMESTAMP或以YYMMDD或YYYYMMDD格式的本地时间的一个数字。 PHPChina 开源社区门户8]&2N ` ,J$S

mysql> select UNIX_TIMESTAMP();

o B"P.~7E3y G0-> 882226357 PHPChina 开源社区门户 V Z;O&c a'a \ ~ V0J y

mysql> select UNIX_TIMESTAMP('1997-10-04 22:23:00'); PHPChina 开源社区门户 p j2[ Q2] X

-> 875996580 PHPChina 开源社区门户4M G n f0} D c:{4S

当UNIX_TIMESTAMP被用于一个TIMESTAMP列,函数将直接接受值,没有隐含的“string-to-unix-timestamp”变换。

FROM_UNIXTIME(unix_timestamp)

b W4W [ P Q)F B g0以'YYYY-MM-DD HH:MM:SS'或YYYYMMDDHHMMSS格式返回unix_timestamp参数所表示的值,取决于函数是在一个字符串还是或数字上下文中被使用。 PHPChina 开源社区门户,p9@,Q h4n !R P

mysql> select FROM_UNIXTIME(875996580);

@ l E L I d0-> '1997-10-04 22:23:00'

:c-v Y M(V h @ R y 0mysql> select FROM_UNIXTIME(875996580) + 0;

J [9` u7c D0e0-> 19971004222300

FROM_UNIXTIME(unix_timestamp,format)

Z W I9P g P j J.X [0返回表示 Unix 时间标记的一个字符串,根据format字符串格式化。format可以包含与DATE_FORMAT()函数列出的条目同样的修饰符。 PHPChina 开源社区门户)y k S8i v p

mysql> select FROM_UNIXTIME(UNIX_TIMESTAMP(),

:d"k } L x u X0'%Y %D %M %h:%i:%s %x');

)\7f D ` G'S)I0-> '1997 23rd December 03:43:30 x'

SEC_TO_TIME(seconds)

6K E ] T X z f j O'i0返回seconds参数,变换成小时、分钟和秒,值以'HH:MM:SS'或HHMMSS格式化,取决于函数是在一个字符串还是在数字上下文中被使用。 PHPChina 开源社区门户 Y o z n'n.o

mysql> select SEC_TO_TIME(2378); PHPChina 开源社区门户7e)O C r Q W+l `"y3I e+x

-> '00:39:38'

v1}&r;u$x G!g u E0mysql> select SEC_TO_TIME(2378) + 0; PHPChina 开源社区门户 ~%U2H r s Y

-> 3938

TIME_TO_SEC(time)

L ]"t,@ u d*I#\0返回time参数,转换成秒。

7g `%O%w n*~*D#m0mysql> select TIME_TO_SEC('22:23:00'); PHPChina 开源社区门户 T9j4 A%R

-> 80580 PHPChina 开源社区门户5Y:O F v B u

mysql> select TIME_TO_SEC('00:39:38');

L8.I$h O0-> 2378

2008年4月29日星期二

window.showModalDialog以及window.open用法简介

一、window.open()支持环境: JavaScript1.0+/JScript1.0+/Nav2+/IE3+/Opera3+
二、基本语法:window.open(pageURL,name,parameters)其中:pageURL 为子窗口路径name 为子窗口句柄parameters 为窗口参数(各参数用逗号分隔)
三、示例:
脚本运行后,page.html将在新窗体newwindow中打开,宽为100,高为400,距屏顶0象素,屏左0象素,无工具条,无菜单条,无滚动条,不可调整大小,无地址栏,无状态栏。请对照。
上例中涉及的为常用的几个参数,除此以外还有很多其他参数,请见四。
四、各项参数其中yes/no也可使用1/0;pixel value为具体的数值,单位象素。
参数 取值范围 说明 alwaysLowered yes/no 指定窗口隐藏在所有窗口之后alwaysRaised yes/no 指定窗口悬浮在所有窗口之上depended yes/no 是否和父窗口同时关闭directories yes/no Nav2和3的目录栏是否可见height pixel value 窗口高度hotkeys yes/no 在没菜单栏的窗口中设安全退出热键innerHeight pixel value 窗口中文档的像素高度innerWidth pixel value 窗口中文档的像素宽度location yes/no 位置栏是否可见menubar yes/no 菜单栏是否可见outerHeight pixel value 设定窗口(包括装饰边框)的像素高度outerWidth pixel value 设定窗口(包括装饰边框)的像素宽度resizable yes/no 窗口大小是否可调整screenX pixel value 窗口距屏幕左边界的像素长度screenY pixel value 窗口距屏幕上边界的像素长度scrollbars yes/no 窗口是否可有滚动栏titlebar yes/no 窗口题目栏是否可见toolbar yes/no 窗口工具栏是否可见Width pixel value 窗口的像素宽度z-look yes/no 窗口被激活后是否浮在其它窗口之上
window.showModalDialog使用手册
基本介绍:showModalDialog() (IE 4+ 支持)showModelessDialog() (IE 5+ 支持)window.showModalDialog()方法用来创建一个显示HTML内容的模态对话框。window.showModelessDialog()方法用来创建一个显示HTML内容的非模态对话框。
使用方法:vReturnValue = window.showModalDialog(sURL [, vArguments] [,sFeatures])vReturnValue = window.showModelessDialog(sURL [, vArguments] [,sFeatures])
参数说明:sURL--必选参数,类型:字符串。用来指定对话框要显示的文档的URL。vArguments--可选参数,类型:变体。用来向对话框传递参数。传递的参数类型不限,包括数组等。对话框通过window.dialogArguments来取得传递进来的参数。sFeatures--可选参数,类型:字符串。用来描述对话框的外观等信息,可以使用以下的一个或几个,用分号“;”隔开。1.dialogHeight :对话框高度,不小于100px,IE4中dialogHeight 和 dialogWidth 默认的单位是em,而IE5中是px,为方便其见,在定义modal方式的对话框时,用px做单位。2.dialogWidth: 对话框宽度。3.dialogLeft: 离屏幕左的距离。4.dialogTop: 离屏幕上的距离。5.center: {yes no 1 0 }:窗口是否居中,默认yes,但仍可以指定高度和宽度。6.help: {yes no 1 0 }:是否显示帮助按钮,默认yes。7.resizable: {yes no 1 0 } [IE5+]:是否可被改变大小。默认no。8.status: {yes no 1 0 } [IE5+]:是否显示状态栏。默认为yes[ Modeless]或no[Modal]。9.scroll:{ yes no 1 0 on off }:指明对话框是否显示滚动条。默认为yes。下面几个属性是用在HTA中的,在一般的网页中一般不使用。10.dialogHide:{ yes no 1 0 on off }:在打印或者打印预览时对话框是否隐藏。默认为no。11.edge:{ sunken raised }:指明对话框的边框样式。默认为raised。12.unadorned:{ yes no 1 0 on off }:默认为no。
参数传递:1.要想对话框传递参数,是通过vArguments来进行传递的。类型不限制,对于字符串类型,最大为4096个字符。也可以传递对象,例如:-------------------------------parent.htm
modal.htm
-------------------------------2.可以通过window.returnValue向打开对话框的窗口返回信息,当然也可以是对象。例如:------------------------------parent.htm
modal.htm

币种定义部分
var psAddStr="ProcessID="+ProcessID+"&AddFlag="+isAddFlag+"&BZBH="+vsBZBH+"&BZMC="+vsBZMC+"&BZFH="+vsBZFH+"&JD="+vsJD;
var Result=window.showModalDialog("addSave.asp?"+psAddStr,'',"dialogHeight:250px;dialogWidth:250px;status:no;");

转:子窗口刷新父窗口的问题

情况:用window.open()打开子窗口时候,如果子窗口要得到父窗口页面的某一个值,有两种办法:第一种将父窗口的那个值保存到formbean中然后在子窗口中用隐藏域得到,第二种就是在子窗口中用window.opener.document.getElementById("").value;

此时在子窗口做了某些操作要刷新父窗口,可以用window.opener.document.location.reload();来刷新父窗口.

注意:有时候用上面的方法刷新父页面的时候会出现个“重试”跟 “取消”的对话框!所以用以下代码可以解决:

window.opener.location.href=window.opener.location.href;



如果用showModalDialog模式窗口的话,父页面中要在参数中写明要传输的对象。例如:

window.showModalDialog("/abc.do?method=list"&typeId="+typeId+"&time=<%=new java.util.Date().getTime() %>",window,
"center:yes;dialogHeight:505px;dialogWidth:630px;toolbar:no;menubar:no;scrollbars:no;resizable:no;location:no;status:no;");

其中"window"就为要传输的对象,意思是将父页面的的整个对象传输到子页面里去。

所以在(如果父页面调模式窗口)子页面中就可以用window.dialogArguments来接受父页面传输过来的参数。

window.dialogArguments.document.forms[0].xxx.value;

来或许父页面的任何值。