* štogod

* * * ex Life Theater

Debug u svetu trivijala - form.submit is not a function!

novikorisnik | 20 Novembar, 2006 12:00

Poznato je da su kompjuteri jako glupave naprave. Da, istina da su u stanju da odrade izuzetno korisne stvari - ali ne znaju kako ... dok im se to ne objasni. Muka je što neće da razume dok se ne očisti od najsitnije greške - jedno slovce pogrešno a ono neće da radi ili radi - nešto potpuno različito.

Evo svež primer iz prakse, dovoljno tipično da se prepozna kad program neće da radi zbog neke banalnosti ...

"zašto može da mi javlja da form.submit() nije funkcija?" 

... dobih nedavno pitanje od prijatelja. Da, radi se o javascriptu, pa sam tu da se cimam kad nešto zaškripi oko toga, jer sam kao neki poznati stručnjak za to.

Odgovor je bio ovde ...

<input type="submit" name="submit" value="ajd :-)" /> 

Jednostavno, zar ne? Isto ime za element formulara kao i metod ... u praksi je funkcija prebrisana input objektom.

Nezgodno, jer kad kreiraš formular razmišljaš o kontekstu elemenata i daješ nazive u skladu s tim. Muka je što se time može pregaziti neka postojeća osobina forme i time ubiti funkcionalnost - očigledno mora da se misli i na to.

Koje rešenje bi moglo da bude da se izbegnu ovakvi previdi? Pa - ili ćeš biti svestan ove mogućnosti i brižljivo proveriti da li se ime već koristi u svojstvima forme ... ili jednostavno uvesti praksu davanja jedinstvenog prefiksa imenima elemenata da se izbegne preklapanje ... ili čekati na grešku pa se setiti ovog teksta :-P

...

Ali ovo je ništa u poređenju s mukom kad Internet Explorer počne da štuca i javlja greške, dosta svež primer kad mi se to desilo u već kompleksnom okruženju sa svim onim lepim džidžama Drag'n'Drop, Plug'n'Play, Rock'n'Roll ... kad jednostavno i ne znaš gde grešku da tražiš, jer lepi IE to i ne zna da kaže, pa - eto cirka 4 sata posla s prekopavanjem čitavog projekta sa svih strana i na kraju ...

 

<input id="i" ...

... metodom kasapljenja stranice sam utvrdio da bez ovoga savršeno funkcioniše :-) Šta reći? Jeste frka, "i" se često koristi kao iterator u petljama, ali kod IE id elementa se automatski pojavljuje u tabeli simbola - evo jednostavno, proverite sledeće ...

 

<div id="i" onclick="for (i = 0; i < 10; i++) alert (i);">hello world</div>

:-D

Ovo je lako rešivo lokalizacijom iteratora (var i = 0; ...), ali već je retka prilika kada se kod piše "od nule" i dovoljna je jedna ovakva petljica da polupa stranicu ko staklo ... tako da ... za svaki slučaj, preporuka - voditi računa pri dodeli imena i identifikatora ...

Nastavak - Javascript - imena, identifikatori, etc - ES, DPT

Komentari

Re: Debug u svetu trivijala - form.submit is not a function!

Custom essay writing service | 14/11/2016, 06:42

It’s pretty good post. I am basically satisfied with your great work. You put truly exceptionally supportive data. Keep it up. Continue blogging. Incredible blog entry. I need to say this is one of the best posts that I've perused in all my life. Everything here is simply astounding. I couldn't have requested a vastly improved post than this. . I am able to bookmark your site and recommend to all my friends.

Dodaj komentar





Zapamti me

 
Accessible and Valid XHTML 1.0 Strict and CSS
Powered by blog.rs - Design by BalearWeb