Вопрос 10. Назначение, основные возможности JavaScript, пример программы


Добавил:DMT
Дата создания:30 декабря 2007, 19:18
Дата обновления:30 декабря 2007, 19:18
Просмотров:17156 последний сегодня, 10:52
Комментариев: 1
Вопрос 10. Назначение, основные возможности JavaScript, пример программы
up

Комментарии для "Вопрос 10. Назначение, основные возможности JavaScript, пример программы"


Пользователь: wiard
Сообщений: 3
Статус: Незримый
Зарегистрирован:
10 января 2008, 18:42
Был:28 января 2008, 12:52
wiard
smsup
Дата: 10 января 2008, 20:23 Сообщение № 1
Что такое JavaScript?
JavaScript — это сравнительно новый язык для написания сценариев, разработанный компанией Netscape. При помощи языка JavaScript мы можем создавать интерактивные web-страницы наиболее удобным и эффективным способом. В настоящем практическом пособии приведены примеры, которые, по мнению автора, являются наиболее важными. Они смогут продемонстрировать возможности JavaSript и принципы организации языка. В этом пособии приводятся примеры того, что можно сделать, используя JavaScript, а также, что не менее важно, рассказывается, как это сделать.

JavaScript — это не то же самое, что Java!
Многие люди считают, что язык JavaScript — это то же самое, что язык Java, недаром они носят одинаковые имена. Однако это неверно. Не будем разбираться в существующих различиях, важно лишь помнить, что JavaScript и Java — это разные языки, хотя в них имеется много общего.

События
Событие — это очень важное в программировании на JavaScript понятие. События главным образом порождаются пользователем, являются следствиями его действий. Если пользователь нажимает кнопку мыши, то происходит событие, которое называется Click. Если экранный указатель мыши движется по ссылке HTML-документа, происходит событие MouseOver.
Существует несколько различных событий. Пусть мы хотим, чтобы наша JavaScript программа реагировала на несколько разных событий. Это можно сделать при помощи event-handlers. Например, можно заставить появиться новое всплывающее окно, которое появляется при нажатии кнопки. Появление нового окна будет следствием наступления события Click.
Event-handler, иначе говоря обработчик событий или средство управления событиями, который требуется для организации такого действия, называется опСlick. Это средство управления событиями сообщает компьютеру, какие действия необходимо совершить при наступлении данного события. Ниже приведена простая программа, иллюстрирующая то, как может быть использовано средство опСlick.
<form>
<input type="button" value="щелкни меня" onClick="alert('Ой-ой')">
</form>

Функции
В большинстве программ на JavaScript мы будем пользоваться функциями . Рассмотрим пример и напишем скрипт, который будет выводить текст, причем один и тот же текст будет выводиться три раза. Вот возможный вариант программы:
Код на HTML
  1. <html>
  2. <script language="JavaScript">
  3. <!- hide
  4. document.write("Добро пожаловать!<br>");
  5. document.write("Это JavaScript!<br>");
  6. document.write("Добро пожаловать!<br>");
  7. document.write("Это JavaScript!<br>");
  8. document.write("Добро пожаловать!<br>");
  9. document.write("Это JavaScript!<br>");
  10. // ->
  11. </script>
  12. </html>
При использовании обязательна ссылка на http://DMTSoft.ru


Этот скрипт выведет такой текст:

Добро пожаловать!
Это JavaScript!

Этот текст будет выведен три раза. Насколько это эффективно? Можно решить эту задачу более удобным способом. Ниже приводится другой вариант решения задачи.

Код на HTML
  1. <html>
  2. <script language="JavaScript">
  3. <!- hide
  4. function myFunction() {
  5. document.write("Добро пожаловать!<br>");
  6. document.write("Это JavaScript!<br>") ;
  7. }
  8. myFunction();
  9. myFunction() ;
  10. myFunction() ;
  11. // ->
  12. </script>
  13. </html>
При использовании обязательна ссылка на http://DMTSoft.ru


Добро пожаловать!
Это JavaScript!
Добро пожаловать!
Это JavaScript!
Добро пожаловать!
Это JavaScript!


В программе этого скрипта мы использовали функцию. Для определения функции нам понадобилось три строчки:
Код на Javascript
  1. function myFunction() {
  2. document.write("Добро пожаловать!<br>") ;
  3. document.write("Это JavaScript!<br>");
  4. }
  5.  
При использовании обязательна ссылка на http://DMTSoft.ru

Слова, помещенные между скобок {}, составляют команды, образующие функцию myFunction(). Это значит, что две используемых нами функции document.write() объединяются в одно целое, и они могут быть выполнены совместно при помощи обращения к функции. В нашей программе мы обращаемся к функции три раза, мы три раза написали myFunction() после того, как определили эту функцию. Мы три раза вызвали функцию, т.е. содержание функции будет исполнено три раза.
Это был пример очень простой функции. Функции также можно использовать в сочетании со средствами управления событиями. Рассмотрим пример:
Код на HTML
  1. <html>
  2. <head>
  3. <script language="JavaScript">
  4. <!- hide
  5. function calculation() {
  6. var x= 12;
  7. var y= 5;
  8. var result- x + y;
  9. alert (result) ;
  10. }
  11. // ->
  12. </script>
  13. </head>
  14. <body>
  15. <form>
  16. <input type="button" value-''Будем считать"
  17. onClick="calculation()">
  18. </form>
  19. </body>
  20. </html>
При использовании обязательна ссылка на http://DMTSoft.ru

Окно броузера и всплывающее окно, содержащее результат функции, описанной
в вышеприведенном скрипте, после нажатия кнопки "Будем считать"


image1


Нажатая кнопка заставляет компьютер выполнить функцию calculation().
Эта функция производит определенные вычисления с переменными x, у и result. Мы можем определить переменные с помощью специального слова var. Переменные могут использоваться для хранения различных величин, например для хранения чисел, текстовых строк и т.д. Строка программы var r e s u l t= x + у; сообщает броузеру, что необходимо создать переменную result и в этой переменной сохранять значение, равное сумме значений переменных х + у ( т . е . 5 + 12). После выполнения этой функции переменная result будет содержать число 17. Команда alert (result) в этом случае эквивалентна команде alert{17). Мы видим всплывающее окно, в котором записано число 17.

Примеры использования языка JavaScript


Часы с текущем временем и днем недели

Код на Javascript
  1. <!-- Скрипт выводит часы с текущем временем и днем недели
  2. <html>
  3. <head>
  4. <title>Часы</title>
  5. <script language="JavaScript">
  6. dCol='ff0000';//цвет даты
  7. fCol='0000ff';//лицевой цвет.
  8. sCol='000000';//секунды
  9. mCol='000000';//минуты
  10. hCol='000000';//часы
  11. ClockHeight=30;
  12. ClockWidth=30;
  13. ClockFromMouseY=0;
  14. ClockFromMouseX=100;
  15. d=new Array("Воскресенье","Понедельник","Вторник","Среда",
  16. "Четверг","Пятница"," ;Суббота");
  17. m=new Array("Январь","Февраль","Март","Апрель","Май","Июнь","Июль"
  18. ,&quo t;Август","Сентябрь","Октябрь","Ноябрь","Декабр");
  19. date=new Date();
  20. day=date.getDate();
  21. year=date.getYear();
  22. if (year < 2000) year=year+1900;
  23. TodaysDate=" "+d[date.getDay()]+" "+m[date.getMonth()]+" "+day+" "+year;
  24. D=TodaysDate.split('');
  25. H='...';
  26. H=H.split('');
  27. M='....';
  28. M=M.split('');
  29. S='.....';
  30. S=S.split('');
  31. Face='1 2 3 4 5 6 7 8 9 10 11 12';
  32. font='Arial';
  33. size=1;
  34. speed=0.6;
  35. ns=(document.layers);
  36. ie=(document.all);
  37. Face=Face.split(' ');
  38. n=Face.length;
  39. a=size*10;
  40. ymouse=0;
  41. xmouse=0;
  42. scrll=0;
  43. props="<font face="+font+" size="+size+" color="+fCol+"><B>";
  44. props2="<font face="+font+" size="+size+" color="+dCol+"><B>";
  45. Split=360/n;
  46. Dsplit=360/D.length;
  47. HandHeight=ClockHeight/4.5
  48. HandWidth=ClockWidth/4.5
  49. HandY=-7;
  50. HandX=-2.5;
  51. scrll=0;
  52. step=0.06;
  53. currStep=0;
  54. y=new Array();x=new Array();Y=new Array();X=new Array();
  55. for (i=0; i < n; i++){y[i]=0;x[i]=0;Y[i]=0;X[i]=0}
  56. Dy=new Array();Dx=new Array();DY=new Array();DX=new Array();
  57. for (i=0; i < D.length; i++){Dy[i]=0;Dx[i]=0;DY[i]=0;DX[i]=0}
  58. if (ns){
  59. for (i=0; i < D.length; i++)
  60. document.write('<layer name="nsDate'+i+'" top=0 left=0 height='
  61. +a+' width='+a+'><center>'+props2+D[i]+'</font></center></layer>');
  62. for (i=0; i < n; i++)
  63. document.write('<layer name="nsFace'+i+'" top=0 left=0 height='
  64. +a+' width='+a+'><center>'+props+Face[i]+'</font></center></layer>');
  65. for (i=0; i < S.length; i++)
  66. document.write('<layer name=nsSeconds'+i+' top=0 left=0 width=15
  67. height=15><font face=Arial size=3 color='+sCol+'><center><b>
  68. '+S[i]+'</b></center></font></layer>');
  69. for (i=0; i < M.length; i++)
  70. document.write('<layer name=nsMinutes'+i+' top=0 left=0
  71. width=15 height=15><font face=Arial size=3 color='+mCol+'><center>
  72. <b>'+M[i]+'</b></center></font></layer>');
  73. for (i=0; i < H.length; i++)
  74. document.write('<layer name=nsHours'+i+' top=0 left=0
  75. width=15 height=15><font face=Arial size=3 color='+hCol+'><center>
  76. <b>'+H[i]+'</b></center></font></layer>');
  77. }
  78. if (ie){
  79. document.write('<div id="Od" style="position:absolute;
  80. top:0px;left:0px"><div style="position:relative">');
  81. for (i=0; i < D.length; i++)
  82. document.write('<div id="ieDate" style="position:absolute;top:0px;left:0;height:'+a+';
  83. width:'+a+';text-align:center">'+props2+D[i]+' </B></font></div>');
  84. document.write('</div></div>');
  85. document.write('<div id="Of" style="position:absolute;
  86. top:0px;left:0px"><div style="position:relative">');
  87. for (i=0; i < n; i++)
  88. document.write('<div id="ieFace" style="position:absolute;top:0px;left:0;height:'+a+';
  89. width:'+a+';text-align:center">'+props+Face[i]+ 9;</B></font></div>');
  90. document.write('</div></div>');
  91. document.write('<div id="Oh" style="position:absolute;top:0px;left:0px">
  92. <div style="position:relative">');
  93. for (i=0; i < H.length; i++)
  94. document.write('<div id="ieHours" style="position:absolute;width:16px;
  95. height:16px;font-family:Arial;
  96. font-size:16px;color:'+hCol+';text-align:center;
  97. font-weight:bold& quot;>'+H[i]+'</div>');
  98. document.write('</div></div>');
  99. document.write('<div id="Om" style="position:absolute;top:0px;left:0px">
  100. <div style="position:relative">');
  101. for (i=0; i < M.length; i++)
  102. document.write('<div id="ieMinutes" style="position:absolute;
  103. width:16px;height:16px;font-family:Arial;
  104. font-size:16px;color:'+mCol+';text-align:center;font-weight:bold& quot;>'+M[i]+'</div>');
  105. document.write('</div></div>')
  106. document.write('<div id="Os" style="position:absolute;top:0px;left:0px">
  107. <div style="position:relative">');
  108. for (i=0; i < S.length; i++)
  109. document.write('<div id="ieSeconds" style="position:absolute;width:16px;
  110. height:16px;font-family:Arial;font-size:16px;color:'+sCol+';
  111. text-align:center;font-weight:bold& quot;>'+S[i]+'</div>');
  112. document.write('</div></div>')
  113. }
  114. (ns)?window.captureEvents(Event.MOUSEMOVE):0;
  115. function Mouse(evnt){
  116. ymouse = (ns)?evnt.pageY+ClockFromMouseY-(window.pageYOffset):
  117. event.y+ClockFromMouseY;
  118. xmouse = (ns)?evnt.pageX+ClockFromMouseX:event.x+ClockFromMouseX;
  119. }
  120. (ns)?window.onMouseMove=Mouse:document.onmousemove=Mouse;
  121. function ClockAndAssign(){
  122. time = new Date ();
  123. secs = time.getSeconds();
  124. sec = -1.57 + Math.PI * secs/30;
  125. mins = time.getMinutes();
  126. min = -1.57 + Math.PI * mins/30;
  127. hr = time.getHours();
  128. hrs = -1.575 + Math.PI * hr/6+Math.PI*parseInt(time.getMinutes())/360;
  129. if (ie){
  130. Od.style.top=window.document.body.scrollTop;
  131. Of.style.top=window.document.body.scrollTop;
  132. Oh.style.top=window.document.body.scrollTop;
  133. Om.style.top=window.document.body.scrollTop;
  134. Os.style.top=window.document.body.scrollTop;
  135. }
  136. for (i=0; i < n; i++){
  137. var F=(ns)?document.layers['nsFace'+i]:ieFace[i].style;
  138. F.top=y[i] + ClockHeight*Math.sin(-1.0471 + i*Split*Math.PI/180)+scrll;
  139. F.left=x[i] + ClockWidth*Math.cos(-1.0471 + i*Split*Math.PI/180);
  140. }
  141. for (i=0; i < H.length; i++){
  142. var HL=(ns)?document.layers['nsHours'+i]:ieHours[i].style;
  143. HL.top=y[i]+HandY+(i*HandHeight)*Math.sin(hrs)+scrll;
  144. HL.left=x[i]+HandX+(i*HandWidth)*Math.cos(hrs);
  145. }
  146. for (i=0; i < M.length; i++){
  147. var ML=(ns)?document.layers['nsMinutes'+i]:ieMinutes[i].style;
  148. ML.top=y[i]+HandY+(i*HandHeight)*Math.sin(min)+scrll;
  149. ML.left=x[i]+HandX+(i*HandWidth)*Math.cos(min);
  150. }
  151. for (i=0; i < S.length; i++){
  152. var SL=(ns)?document.layers['nsSeconds'+i]:ieSeconds[i].style;
  153. SL.top=y[i]+HandY+(i*HandHeight)*Math.sin(sec)+scrll;
  154. SL.left=x[i]+HandX+(i*HandWidth)*Math.cos(sec);
  155. }
  156. for (i=0; i < D.length; i++){
  157. var DL=(ns)?document.layers['nsDate'+i]:ieDate[i].style;
  158. DL.top=Dy[i] + ClockHeight*1.5*Math.sin(currStep+i*Dsplit*Math.PI/180)+scrll;
  159. DL.left=Dx[i] + ClockWidth*1.5*Math.cos(currStep+i*Dsplit*Math.PI/180);
  160. }
  161. currStep-=step;
  162. }
  163. function Delay(){
  164. scrll=(ns)?window.pageYOffset:0;
  165. Dy[0]=Math.round(DY[0]+=((ymouse)-DY[0])*speed);
  166. Dx[0]=Math.round(DX[0]+=((xmouse)-DX[0])*speed);
  167. for (i=1; i < D.length; i++){
  168. Dy[i]=Math.round(DY[i]+=(Dy[i-1]-DY[i])*speed);
  169. Dx[i]=Math.round(DX[i]+=(Dx[i-1]-DX[i])*speed);
  170. }
  171. y[0]=Math.round(Y[0]+=((ymouse)-Y[0])*speed);
  172. x[0]=Math.round(X[0]+=((xmouse)-X[0])*speed);
  173. for (i=1; i < n; i++){
  174. y[i]=Math.round(Y[i]+=(y[i-1]-Y[i])*speed);
  175. x[i]=Math.round(X[i]+=(x[i-1]-X[i])*speed);
  176. }
  177. ClockAndAssign();
  178. setTimeout('Delay()',20);
  179. }
  180. if (ns||ie)window.onload=Delay;
  181. </script>
  182. </head>
  183. <body>
  184. </body>
  185. </html>
При использовании обязательна ссылка на http://DMTSoft.ru


image2

Скрипт меню
Код на HTML
  1. <body onload="init()" LINK="#FFFFFF" VLINK="#999999" ALINK="#00FF00">
  2. <Center>
  3. <style>
  4. .menu
  5. {
  6. position: absolute;
  7. z-index: 1;
  8. padding:5;
  9. border-width: 1;
  10. border-style: ridge;
  11. background-color: blue;
  12. color: white;
  13. }
  14. </style>
  15. <script language="JavaScript">
  16. var mpos=new Array();
  17. var mdir=new Array();
  18. var maxmenus=3;
  19. var delay=20;
  20. function do_menu(menu)
  21. {
  22. for(i=0; i<maxmenus; i++)
  23. {
  24. if(menu!=i && mpos[i]>-122)
  25. {
  26. mdir[i]=-4;
  27. if(mpos[i]>=30)
  28. move_menu(i);
  29. }
  30. }
  31. mdir[menu]=-mdir[menu];
  32. if(mpos[menu]<=-122 || mpos[menu]>=30)
  33. move_menu(menu);
  34. }
  35. function move_menu(menu)
  36. {
  37. mpos[menu]+=mdir[menu];
  38. if(document.layers)
  39. document.layers["menu"+menu].top=mpos[menu];
  40. else
  41. document.all["menu"+menu].style.top=mpos[menu];
  42. if(mpos[menu]>-122 && mpos[menu]<30)
  43. setTimeout("move_menu("+menu+")", delay);
  44. }
  45. function init()
  46. {
  47. for(i=0; i<maxmenus; i++)
  48. {
  49. mpos[i]=-122;
  50. mdir[i]=-4;
  51. }
  52. }
  53. </script>
  54. <div class="menu" style="top:0; left:10; width: 50; z-index:2"><a
  55. href="javascript:do_menu(0)"><b>
  56. <p>menu1</b></a> </p>
  57. </div><div id="menu0" class="menu" style="top:-122; left:10; width: 200;">
  58. <p>text<br>
  59. <a href="http://winsoft.tulpar.net">WINsoft</a><br>
  60. text2<br>
  61. text3</p>
  62. </div><div class="menu" style="top:0; left:74; z-index:2; width: 50; background: orange"><a
  63. href="javascript:do_menu(1)"><b>
  64. <p>menu2</b></a> </p>
  65. </div><div id="menu1" class="menu"
  66. style="top:-122; left:74; width: 200; background: orange">
  67. <p>text1<br>
  68. text2<br>
  69. text3</p>
  70. </div><div class="menu" style="top:0; left:129; z-index:2; width: 50; background: red"><a
  71. href="javascript:do_menu(2)"><b>
  72. <p>menu3</b></a> </p>
  73. </div><div id="menu2" class="menu" style="top:-122; left:129; width: 200; background: red">
  74. <p>text1<br>
  75. text2<br>
  76. text3<br>
  77. text4 </p>
  78. </div>
  79. </center>
  80. </body>
При использовании обязательна ссылка на http://DMTSoft.ru


image3