КИСМ, ХОЛАТЛАР САТРИ, САТР ХОЛАТИ ВА ТАЙМЕРЛАР.
§ Сатр холати (холатлар сатри)
Java S да сиз томондан тузилган дастурлар холатлар сатрига ёзув ёзиш мумкин яъни у сизни браузерингиз дарчасини пастки кисмида туртбурчак шаклида булади. Буни килиш учун сизга атиги window.status да керакли сатрни ёзишингиз етарлидир. Навбатдаги мисолда шундай иккита тугмача ташкил килинадики улар оркали сиз холат сатрига бирор бир матнни ёзишингиз ва мос холда сунгра уларни учриришингиз мумкин:
<html>
<head>
<script language="JavaScript">
<!-- hide
function statbar(txt) {
window.status = txt;
}
// -->
</script>
</head>
<body>
<form>
<input type="button" name="look" value="Писать!"
onClick="statbar('Привет! Это окно состо\яни\я!');">
<input type="button" name="erase" value="Стереть!"
onClick="statbar('');">
</form>
</body>
</html>
Демак, биз иккита тугмадан иборат форма ташкил этамиз. Бу иккала тугмача хам statbar() функциясини чикаради. Ёзиш тугмачасидан чакурув куйидагича булади: statbar ‘салом! Бу холатлар сатри!’
Кавс ичига биз ‘салом! Бу холатлар сатри!’ деб ёздик. Ва бу statbar функциясига юборилалиган матннинг узидир. Уз навбатида statbar() функциясини кандай аникланганини куришингиз мумкин:
function statbar(txt) {
window.status = txt;
}
Функция сахифасида txt сузи жойлаштирилган бу биз функцияга узатайтган сатр txt узгарувчисига узлаштиришини билдиради. Функцияга узгарувчилар кириртиш тез – тез кулланиладиган ва функцияга ихчамлик келтирадиган холатдир. Сиз функцияга бир неча аргументларни киритишингиз мумкин, факат уларни вергул билан ажратиш керак.
Txt сатри window.status = txt буйруги оркали холатлар сатрига олиб борилади. Шунга мос холда матнни холатлар сатридан йукотиш window.status ёзувида буш сатрни узлаштириш оркали бажарилади.
Холатлар сатрига матнни чикариш механизми мурожатлар билан ишлашда жуда кулай. Жорий мурожатнинг url ини экранга чикариш урнига, сиз оддийгина кейинги сахифада нима дейилишини суз билан тушинтиришингниз мумкин. Ушбу мисолдаги link – факатгина сичконча курсаткичини мурожат устига жойлаштиришни намоиш килади.
<a href="/dontclck.htm"
onMouseOver="window.status='Don\'t click me!'; return true;"
onMouseOut="window.status='';">link</a>
onmouseover га нима учун true кийматни беришимиз керак деб сурашингиз мумкин. Аслини олганда бу шуни англатадики, браузер бундан кейин mouseover ходисасини ишлашнинг шахсий кодини бажармсалиги керак. Коидага кура браузер холатлар сатрида мос мурожатнинг url ини курсатади. Агар биз true кийматини бермасак, у холда бизнинг код бажарилгандан дарров браузер уз усули буйича холатлар сатрига ёзади, яъни бизнинг матн шу ернинг узида учирилади ва укувчилар кура олмайди.
Бу скриптда сиз яна бир нарсани куришингиз мумкин. Айрим холларда сизга куштирнок символларни чоп этиш керак булиб колади. Масалан биз dont click me матнини чоп этишимиз керак ва биз уни onmouseover ходисаларни ишлаш процедурасига берсак унда бирлик куштирноклар ишлатилади. Натижада биз dont … деб ёзсак, браузер апостров символарида адашади. Ушбу муоммани ечиш учун бизга факат куштирнок белгиси олдидан \ белгини куйиш етарли, бу жорий белги факат чоп этиш учун куйилганини билдиради (бу холат иккилик куштирноклар учун хам мумкин).
§ Таймерлар.
Time out (ёки таймерлар) функцияси ёрдамида сиз компъютерни бир неча буйрукларини кандайдир вактгача бажарилишини дастурлаштиришингиз мумкин. Навбатдаги скриптда шундай тугмача намойиш килинганки, у тушаётган дарчани дарров эмас, балки 3 секунддан сунг бажаради:
<script language="JavaScript">
<!-- hide
function timer() {
setTimeout("alert('Врем\я истекло!')", 3000);
}
// -->
</script>
...
<form>
<input type="button" value="Timer" onClick="timer()">
</form>
Бу ерда settimeout() window объектининг усуулларидан биридир. У вакт интервалини урнатади, мен уйлашимча бу кандай содир булишини англадингниз? Биринчи чакирув аргументи бу Java S коди булиб у берилган вактда бажарилувчи хиобланади. Бизнинг холатда у “alert (‘вакт булди’)” га тенг. Илтимос шунга эътиборингизни каратингки Java S коди куштирнокка олиниши керак. 2 чи аргументда компьютерга ушбу код качон бажарилиши хабар килинади. Бунда биз вактни миллисекундларда курсатишимиз керак. (3000 миллисекунд = 3 секунд).
§ Прокрутка (Айлантириш).
Энди сиз кандай килиб холатлар сатрига ёзув ёзишни ва таймерлар билан кандай ишлашни билган вактингизда айлантиришни бошкаришни урганишга утсак хам булади. Сиз аллакачон матнли холатлар сатридан жойлаштиришни куриб олдингиз. Интернетда бу усулдан хамма жойда кулланилади. Энди биз асосий чизгичда кандай килиб айланишни дастурлаштиришни куриб чикамиз. Хамда бу чизгичнинг барча мумкин булган ижобий узгартиришларини куриб чикамиз. Югурувчи сатр яратиш деярли оддий. Келинг дастлаб кандай килиб холатлар сатрида жойлашувчи матн – югурувчи сатрни яратиш мумкинлиги хакида уйланиб оламиз. Эхтимол, биз олдин холатлар сатрига бирор бир матн ёзиб олишимиз керакдир. Кейин вакт утиши билан биз у ерга факат уни сал чапрокка суриб уша матнни узини ёзишимиз керак. Агар биз буни бир неча марта килсак, фойдаланувчида у югурувчи сатр билан иш олиб бораётгандай таасурот колдиради. Лекин, биз шуни эсда тутишимиз керакки хар сафар холатлар сатрида матннинг кайси кисми куринишини хисоблаб боришимиз керак.(Коида буйича матннинг катталиги холатлар сатрини улчамини ошириб юборади). Бу тугмача дарча очади ва айлантиришга мисол келтиради.
Бу скриптнинг бошлангич коди ва мен унга бир неча изохлар киритдим.
<html>
<head>
<script language="JavaScript">
<!-- hide
// define the text of the scroller
var scrtxt = "Это JavaScript! " +
"Это JavaScript! " +
"Это JavaScript!";
var len = scrtxt.length;
var width = 100;
var pos = -(width + 2);
function scroll() {
// напечатать заданный текст справа и установить таймер
// перейти на исходную позицию для следующего шага
pos++;
// вычленить видимую часть текста
var scroller = "";
if (pos == len) {
pos = -(width + 2);
}
// если текст еще не дошел до левой границы, то мы должны
// добавить перед ним несколько пробелов. В противном случае мы должны
// вырезать начало текста (ту часть, что уже ушла за левую границу
if (pos < 0) {
for (var i = 1; i <= Math.abs(pos); i++) {
scroller = scroller + " ";}
scroller = scroller + scrtxt.substring(0, width - i + 1);
}
else {
scroller = scroller + scrtxt.substring(pos, width + pos);
}
// разместить текст в строке состо\яни\я
window.status = scroller;
// вызвать эту функцию вновь через 100 миллисекунд
setTimeout("scroll()", 100);
}
// -->
</script>
</head>
<body onLoad="scroll()">
Это пример прокрутки в строке состояния средствами JavaScript.
</body>
</html>
Scroll() Функциясининг куп кисми матнни фойдаланувчи курадиган кисмини ажратиб олишдан иборат. Биз бу кодни кенг равишда тушунтириб утирмаймиз, факатгина сиз умуман бу айлантириш кандай жойлаштирилганини тушунсангиз булди. Ушбу жараённи ишга тушуриш учун биз <body> тегидан ёзилган onload ходисаларини ишлаш процедурасидан фойдаланамиз. Яъни scroll() функцияси HTML сахифа юклангандан дарров чакирилади. Onload процедураси воситасида scroll() функциси чакирилади. Scroll() функциясида биз биринчи булиб таймерни урнатамиз. Бу билан биз scroll() функцияси хар 300 секундда чикарилишини кафолатлаймиз. Бунда матн бир кадамга утказилади ва бошка таймер юборилади ва шу тарика у бетухтов давом этади.