ugrás a tartalomhoz

Érthetetlen JS hiba IE alatt

fchris82 · 2008. Feb. 27. (Sze), 15.57
IE azt írja ki egy ablakban, ha megkérem rá, hogy:
Sor: 285
Karakter: 7
Hiba: 'null' értéke NULL, vagy nem objektum.
Kód: 0


Nagy nehezen megtaláltam, hogy melyik fájlról is beszél, mert azt persze minek is írná ki, hogy a 8 JS közül melyikben is találja a hibát.
Sortöréseket szúrkáltam be, és amelyiknél változott a "Sor" rész, az volt az.
Namost az ominozus rész:

AIM = {  
  [...]
    show : function(f) {
      f = $(f);
      f.setReadonly(false);
    },
  [...]
}
A 285. sor hetedik karaktere a záró kapcsoszárójel+vessző utáni sortörés! Az érdekes, hogy ha így formázom a kódot, akkor is a hetedik karaktertől jelöli a hibát:

AIM = {  
  [...]
    show : function(f) {
      f = $(f);
      f.setReadonly(false);    },
  [...]
}
Ha kikommentezem az f.setReadonly(false) sort, akkor lefut hibaüzenet nélkül. Ha a setReadonly() fv definíció összes sorát kikommentezem, akkor már nem:

Form.Methods = {
[...]
  setReadonly: function(form, readonly) {
    //form = $(form);
    //Form.getElements(form).invoke('setReadonly', readonly);
    //return form;
  },
[...]
}
És hogy ne érjenek véget még a furcsaságok, kb 30 másik oldalon hiba nélkül lefut! Egyetlen oldalon nem... :-/

Vkinek van ötlete?
 
1

vessző

Jano · 2008. Feb. 27. (Sze), 17.43
JSON formátumnál a vessző szokott galibát okozni, amikor utolsó elem/property után is ott marad.

akarmi = {
a:{},
b:{},
c:{}
}

c után már nem lehet vessző.
2

firebug

ksgy · 2008. Feb. 27. (Sze), 18.55
JS debugolashoz javaslom a firebug-ot.
3

IE

Chupacabra · 2008. Feb. 27. (Sze), 19.55
Írta hogy ie alatt. De ha firefox és opera alatt nincs hiba, csak ie panaszkodik akkor majdnem biztos hogy a Janó által írt probléma áll fent. Ie debuggoláshoz kis segítség: http://www.jonathanboutelle.com/mt/archives/2006/01/howto_debug_jav.html
4

show f

zzrek · 2008. Feb. 27. (Sze), 22.07
Esetleg nem véletlenül a show függvény van meghívva olyan id-vel, ami nem létezik? Ebben az esetben az f=$(f) nullt ad vissza és így az f.setReadonly kiakad. Tegyél elé egy alertet: f = $(f);alert(f);f.setReadonly(false);
5

IE hiba tesztelése

Poetro · 2008. Feb. 27. (Sze), 22.32
IEs hibák tesztelésére ajánlom az Opera Error Console-ját ugyanis ott pontosan meg van határozva, hogy hol is a hiba, és ugyanazokra a dolgokra érzékeny, mint az IE (ugyanakkor végrehajtja a kódot, nem áll meg a közepén).

Továbbá érdemes JSLint-el megnézni az illető kódot, sokmindenre felhívja majd a figyelmet.
6

Köszönöm

fchris82 · 2008. Feb. 28. (Cs), 14.04
Köszönöm mindenkinek a válaszát.

JSON formátumnál a vessző szokott galibát okozni, amikor utolsó elem/property után is ott marad.

Nincs vessző hiba, megnéztem. Továbbá ha az is lett volna, akkor minden formnál hisztiznie kellett volna, de csak ennél az egynél tette.

JS debugolashoz javaslom a firebug-ot.

Azt használom, de sajnos a probléma csak IE alatt jelentkezett.

Ie debuggoláshoz kis segítség: http://www.jonathanboutelle.com/mt/archives/2006/01/howto_debug_jav.html

Köszönöm, mindjárt áttanulmányozom.

Esetleg nem véletlenül a show függvény van meghívva olyan id-vel, ami nem létezik?

Nem, kiirattam néhány tulajdonságát, biztosan megkapja az f paramétert és az helyes objektum.

IEs hibák tesztelésére ajánlom az Opera Error Console-ját ugyanis ott pontosan meg van határozva, hogy hol is a hiba, és ugyanazokra a dolgokra érzékeny, mint az IE (ugyanakkor végrehajtja a kódot, nem áll meg a közepén).

Továbbá érdemes JSLint-el megnézni az illető kódot, sokmindenre felhívja majd a figyelmet.

Köszönöm, ezeket nem ismertem, ki fogom próbálni.