Параметры в пользовательских функциях
Давайте разберемся, каким образом функциям передаются параметры. Напишем код программы, которая открывала бы новое окно и выдавала сообщение о получении параметров. Причем размер окна должен соответствовать значениям, передаваемым подпрограмме (рис. 4).
Код может быть, например, таким:
<HTML>
<HEAD>
<TITLE> Приветствие в отдельном окне </TITLE>
<SCRIPT language="JavaScript">
<!--
function openWindow2 (WindWidth, WindHeight,
imageType, imageName, imageWidth, imageHeight,
altwindname, alttext, posLeft, posTop) {
var frame1 = window.open ("", "frame1", "width="+WindWidth+",
height="+WindHeight+", copyhistory=0, directories=0,
height=500, location=yes, menubar=0, scrollbars=yes,
status=0, toolbar=0, left="+posLeft+", top="+posTop);
document.write('<P>Подпрограмма вызвана!</P>');
frame1.document.open();
frame1.document.write ('<html> <title>'+altwindname+'</title> <body bgcolor="BLUE"
text="YELLOW" leftmargin="0" topmargin="0" marginheight="0"
marginwidth="0" onReset="self.close()">');
frame1.document.write ('<img src=\"'+imageName+'\" width='+imageWidth+'
height='+imageHeight+'border=0 vspace=0 hsapce=0 alt=\"'+alttext+'\">');
if (imageType == "swf") {
frame1.document.write('<P>обработка параметра... '+imageType);
<!-- ... выполнение действий, определенных пользователем -->
}
else {
frame1.document.write ('<P>неизвестный параметр!');
<!-- ... выполнение действий, определенных пользователем -->
}
document.write('<P>Этот текст в первом окне!</P>');
frame1.document.write('<P>А этот текст во втором (новом) окне!</P>');
frame1.document.write('</body></html>');
frame1.document.close();
frame1.focus();
}
//-->
</SCRIPT>
</HEAD>
<BODY bgcolor="#FFFFF0" marginwidth=0 marginheight=0 topmargin=0
leftmargin=0 text="#000000" link="#000000">
<A href="#" onClick="openWindow2 (500, 400, 'swf', 'IMAGE/ABC.GIF',
120, 100, 'Окно 2', 'С днем рождения, программер!', 0, 0)";>
<NOSCRIPT>
<A href="program2.htm" target="_new">
</NOSCRIPT>
<img src="image/abc.gif" width=80 height=50 border=0
vspace=0 hsapce=0 alt "С Днем рождения, программер!">
</A>
<BR> <BR>
</SCRIPT>
</BODY>
</HTML>
По щелчку на картинке (или надписи, если графика отключена) вызывается функция openWindow2(), которая формирует новое окно размером 500 * 400, открывает его и печатает текстовое сообщение. В качестве параметров мы передаем в подпрограмму: ширину и высоту окна в пикселях; параметр swf, в зависимости от значения которого выполняется код по одному из определенных в программе условий; название картинки (с указанием пути), которая появится в новом окне (abc.gif); размеры картинки (мы растянем ее до 120 * 100); название открываемого окна (Окно 2); текст, который будет отображаться при отключенной графике вместо картинки (С днем рождения, программер!); начальные смещения нового окна (0,0).
Оператор сравнения == «решает», какой код выполнять. В нашем случае напечатается строка «обработка параметра...».
Конечно, не помешало бы добавить кнопку закрытия нового окна. Для этого можно воспользоваться рассмотренным выше кодом. Просто вставьте его в frame1.document.write() и разместите в функции openWindow2 между строками frame1.document.write ('<P>А этот текст во втором (новом) окне!'); и frame1.document.write ('</body></html>');. Сам код будет выглядеть так
frame1.document.write ('<CENTER> <FORM> <INPUT type="button" value="закрыть" onClick="window.close()"> </FORM> </CENTER>');
frame1.document.write('<NOSCRIPT>');
frame1.document.write ('<I>Используйте кнопку "Возврат"/"BACK" вашего браузера для возврата на предыдущую страницу.</I>’);
frame1.document.write ('</NOSCRIPT> <BR clear="all">');
В приведенном примере функция получает параметры, но ничего не возвращает. Рассмотрим фрагмент кода другой функции, которая получает три параметра, производит вычисления по заданной формуле и возвращает результат:
<HTML>
<HEAD>
<SCRIPT language="JavaScript">
<!--
function calculate_something(a,b,c) {
var z1 = (a+b+c)*5; // 300
var z2 = (a*b*c)+5; // 6005
<!-- ... выполнение действий, определенных пользователем -->
return (z1+z2); // 6305
}
//-->
</SCRIPT>
</HEAD>
<BODY bgcolor="#FFFFF0" text="#000000">
<SCRIPT language="JavaScript">
var res = calculate_something(10,20,30)*10;
document.write ("<P> Результат: " + res); // печатаем вычисленное значение (63050)
</SCRIPT>
</BODY>
</HTML>
Как видим, код довольно простой. Функции передаются три числа и вычисляется некоторое новое значение, которое возвращается вызывающей программе. Результат присваивается переменной res и выводится на экран. При желании вы можете поэкспериментировать с логическими и символьными переменными. А мы переходим к следующему разделу.