2008-10-21

вакытыны төзәттем.
бу блогны караганда минга вакытлары дөрес күренмәй.
кичә бу блогка statcounter.com санагычы тоташтырдым.

2008-10-19

javascript белән ничек йазу чыгарып була. куштырнаклар. обйектлар.

берсен узган йазмада әйттем. "alert" дигән "метод" белән. ул вакытта мин 2+3 кушу нәтиҗәсене чыгардым. йазуларны куштырнак еченә аласы. болай була: alert("сәләм!"); йазу ечендә куштырнак булырга тийеш булса, ул куштырнакны шул көйенчә генә йазасы түгел, ә "\" тамгасындан соң йазасы. менә болай: alert("бер кеше \"сәләм!\" диде."); шулай ук куштырнак урынына бер катлы тырнак белән дә йазып була йазуларны: alert('Сәләм!'); һәм тегесе болай була: alert('бер кеше \"сәләм!\" диде.'); әмма, йазу "бер катлы тырнак" белән әйләндерелгәндә, ечендә кулланыла торган куштырнакларны шул көйе йазырга да була: alert('бер кеше "сәләм!" диде.'); һәм киресенчә, куштырнак ечендә бер катлы тырнак булганда унны шул көйе йазырга була. бу кагыйдәләр alert методы белән генә түгел, гел шулай. "ике катлы тырнак" белән йазыламы, бер катлымы, айырмасы йук, минем белеүемчә, әмма ечендә куштырнак йә апостроф (бер катлы тырнак шул бугай бит инде, инглизчә клавиатурада "э" клавишасында ул) булуына карап, унны гади генә йазыр өчен уңайлысын сайларга була. бер катлы тырнак белән әйләндереп алынган текст ечендә бер катлы тырнак булса, аны да "\" дан соң йазасы.
узган йазмада күрсәткәнчә, сан чыгарганда куштырнак кирәк түгел: alert(2+3); йә alert(5); "5" дип чыгара, alert("2+3"); "2+3" дип чыгара.
"alert"тан башка тагы бер ничә йазу чыгару ысулы бар. браузерның асткы йулында йазу чыгарып була. ул йул(тасма) "статус йулы" дип атала. әмма барча браузерларда да javascript белән статус йулына йазу чыгаруны тыйу мөмкинлеге бар. йәгъни сайтыгызда бу ысулны куллансагыз, белеп торыгыз, бәлки ул кай бер кешенең браузерында "хәл йулы"ны үзгәртмәс. ул ысул болай: window.status="Сәләм!"; (йәки болай: window.status='Сәләм!'; ). узган йазмадагыча мондый ечтәлекле html файл белән сынап карай аласыз:
<script>window.status="Бу скрипт \"Сәләм!\" дип әйтә.";</script>
һәм тагын бер ысул болай:
document.write("Сәләм!");
монысы инде төп браузерның төп тәрәзендә, гадәти html чыга торган урынга йаза.
монысы өченче ысул булды. тагы бер ничә ысул бар, шуларның берсе "innerHTML" белән:
document.getElementById("бер_елемент").innerHTML="Сәләм!"; бу ысул ешләсен өчен, браузер бу скриптны ешләгән вакытта "бер_елемент" дигән исем кушылган бер html елементын ешкәрткән булырга тийеш, булмаса, ул "бер_елемент"ны (... монда йакынча бер сәгать үтеп китте, хәзер дәвам итәм..) тапмай, хата чыгара. бу ысулны мондый html файл белән ешләтеп карап була:
<p id="бер_елемент"></p>
<script>
document.getElementById("бер_елемент").innerHTML="Сәләм!";
</script>

бу файл бу көйенчә Opera браузерында ешләй. Firefox та ешләмәде. чөнки ул script елементын башкасы әйтелмәгәндә "head" ечендә дип кабул итә, ә "head" "<p id="бер_елемент"></p>" га караганда алдарак урнаша һәр вакыт, шунга күрә скриптны ешләткәндә браузер <p id="бер_елемент"></p> дигән җирне әле укымаган була һәм "бер_елемент" дигән исемле "p"ны таба алмай. әгәр script ның body ечендә урнашканлыгы күренеп торса, файрфокс браузеры унны body дан head ка күчермәй инде, ә body ечендә script ны p дан соң урнаштырасы, болай була:
<body><p id="бер_елемент"></p>
<script>
document.getElementById("бер_елемент").innerHTML="Сәләм!";
</script></body>

монысы ешләй. ләкин "Сәләм" дигән йазыу урынына аңлашылмай торган йазыу чыгарга мөмкин. Мәсьәлән, бу html файл utf-8 форматы белән саклатылса, миндә ул файрфокста "Сәләм!" урынынга "Сәләм!" дип йазды. бу файлның utf-8 форматында булуыны файл ечендә тамга белгертеп куйсаң, браузер унны укып белә. унны болай тамгалайсы:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<body><p id="бер_елемент"></p>
<script>
document.getElementById("бер_елемент").innerHTML="Сәләм!";
</script></body>

бу html кодны йазганда html "тег"ларыны шул ук йулга йазырга да була, йаңа йулга да йазырга була, мәсьәлән шушы ук html не болай да йазып була:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<body>
<p id="бер_елемент"></p><script>
document.getElementById("бер_елемент").innerHTML="Сәләм!";</script>
</body>

нәрсә ул 'html "тег"лары' - ул "<" белән ">" еченә алынган тамгалар, мәсьәлән, "</body>", "<p id="бер_елемент">".
javascript белән башка йазыу чыгарыу йуллары да бар. бүтәннәре катлаулырак. берсе мәсьәлән internet explorer да бер төрле йазыла, башка браузерларда башкача йазыла. менә ул:
Internet Explorer да (һәр хәлдә, 6 ынчысында) болай йазасы:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<body>
<p id="бер_елемент"></p><script>
document.getElementById("бер_елемент").innerText="Сәләм!";</script>
</body>

башкаларында болай:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<body>
<p id="бер_елемент"></p><script>
document.getElementById("бер_елемент").textContent="Сәләм!";</script>
</body>

Opera браузеры икесе белән дә ешләй. моны барлык браузерда ешләй торган итеп йасау йулы бар, унны шулай итәләр (барча браузер белән ачылыуына исәп тотканда) (чын сайттагы йаваскрипт йазганда бу ысул кулланылганда).
бу ахыргы ике ысулның айырмасы бар, innerHTML бер төрле, innerText белән textContent икенче төрле.
document.getElementById нәрсә аңлата да
document.write нәрсә аңлата. моны инглиз телене белгән кеше белә. document - ул документ, программалаудагы бер термин дийергә була, һәм шулай ук гадәти компьйутер ешләрендә дә ул бер термин. getElementById "исеме буйынча танып алып табып бер елементны ал" дигән сүз, ә write - "йаз" дигән сүз. document ул шушы без йазган файл, браузерга кереп браузер унны ешкәрткәч ул браузер ечендә ешләп, күрсәтелеп торганда "document" дип атала. шушы "document" ка карата төрле гамәлләр кылып була. мәсьәлән write һәм getElementById. бу гамәлләр программалауда "метод" дип атала. "document" дигәне - бер "обйект". "document"тан башка "обйект"лар да була. һәр бер төр обйектка үзенә бер төрле гамәлләр кылып була. шулай: document.getElementById("бер_елемент"); мәсьәлән. елек әйткән alert та бер "метод". унның обйектын төшереп калдырырга да була, ә ул обйект window. унны болай да йазырга була иде: window.alert("Сәләм!"); . ни өчен window ны төшереп калдырырга да була - чөнки безнең бу бөтен программа шунның ечендә урнашкан (браузерда бу скриптлар window ечендә урнашкан дип санала), ә һәр бер обйектның ечендә программа йазганда унның ечендә ул обйектка караган әйберләрнең, мәсьәлән методларның, обйектыны күрсәтеп тормаска да була, шул обйектныкы булып санала.
'"document"тан башка "обйект"лар да була' дигән идем бит. мәсьәлән document.getElementById("бер_елемент") ул үзе бер обйект, шунга күрә унга тагы нокта аша гамәл дә йазып була. обйектларга нокта аша гамәл дә йазып була, үзлек дигән әйбер дә йазып була. textContent, innerHTML, innerText - үзлекләр.
javascript белән башка йазыу ысуллары да бар.
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<body>
<p id="бер_елемент"></p>
<script>
document.getElementById("бер_елемент").appendChild(document.createTextNode("Сәләм!"));
</script>
</body>

монда document.getElementById("бер_елемент") обйектына appendChild гамәле кылына. мондагы document.createTextNode("Сәләм!") - үзе бер обйект, ул "document" обйектына "createTextNode" дигән гамәл кылыу нәтиҗәсендә барлыкка килгән бер обйект.
"createTextNode" - "текст төйене барлыкка китерәсе" дигән сүз,
"appendChild" - "бала обйект(йәгъни ечке обйект) өстәргә" дигән сүз.
'мәсьәлән document.getElementById("бер_елемент") ул үзе бер обйект' дигән идем бит. ул шул html текстында "<p id="бер_елемент">

" дип тамгаланган әйберне аңлата инде.
йаваскрипт белән йазырга тагы бер ысул:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<body>
<p id="бер_елемент"> </p>
<script>
document.getElementById("бер_елемент").firstChild.nodeValue="Сәләм!";
</script>
</body>

игътибар итегез, монда <p id="бер_елемент"> белән </p> арасында буш урын калган,шулай итмәгәндә файрфокста ешләмәй. ә Operaда (9.27енчедә) хәтта болай да ешләмәй, унда буш урын гына түгел, бер хәреф йазып куйырга кирәк, хәреф урынына &nbsp; тамгасы куйырга була, йә нокта. Internet Explorer да Opera шикелле.
башка ысуллар шушы ысулларда инде күрсәтелгән алымнарны башкача куллана гына бугай инде. бу йазма шуның белән тәмам.
5 минуттан соң: башка ысуллар да бар. "рәсем астынга" йазып була, сары төстәге "йәрдәм йазыулары" йазып була, төрле браузерларның үзенчәлекле ысуллары бар, йаңа версийә "css" сыйфатлары арткылы да йазып була.

31енче октябыр: рәсем арты йазыуы, сары йәрдәм йазыуы һәм тәрәз исемене ничек javascript белән йазып булыуы турында йаздым: yavaskript bilan nicik yazow cigarip bula, dawamo.