IE problem med jQuery.val()

Tags:    jquery javascript

Hej udviklere,

jeg sidder lige og roder lidt med noget jQuery, og er stødt på et problem.
Som så ofte handler det naturligvis om at IE ikke forstår at håndtere koden ordentligt.
Jeg har følgende jQuery kode:
Fold kodeboks ind/udJScript kode 


Og følgende HTML kode:
Fold kodeboks ind/udHTML kode 


Koden virker perfekt i Google Chrome og FF, men internet explorer fejler.
Jeg får følgende, ubrugelige, fejlmeddelelser fra IE:

Detaljer om fejl på websiden

Brugeragent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; OfficeLiveConnector.1.5; OfficeLivePatch.1.3; .NET4.0C; .NET4.0E)
Tidsstempling: Mon, 21 Mar 2011 20:09:58 UTC


Meddelelse: Objektet understøtter ikke denne egenskab eller metode
Linje: 10
Tegn: 9
Kode: 0
URI: xxxxxxx.dk/jquery/jquery.functions.js


Det vil altså sige at det skal dreje sig om første linje i min repaint() funktion.

Jeg har siddet og brudt mit hoved med skidtet i en time nu, og kan virkeligt ikke se hvad jeg gør galt.

På fårhånd mange tak!



4 svar postet i denne tråd vises herunder
3 indlæg har modtaget i alt 9 karma
Sorter efter stemmer Sorter efter dato
Nu er der jo ikke nogen checkboxes der er afkrydset som default.

Så jeg ville nok lige teste list på det:

Fold kodeboks ind/udKode 




Hej Simon

Af en eller anden årsag (spørg mig ikke hvorfor), er du i IE nødt til at declare din javascript-variabler, da du ellers vil få den fejl. Din repaint-funktion skal derfor se sådan ud:

Fold kodeboks ind/udKode 


Det har muligvis noget at gøre med, at IE behandler globale variabler anderledes end FF og Webkit.



meningen med "var" er at du definerer variablen. Hvis du ikke bruger "var" vil JavaScript lede efter en variabel med det navn der allerede er defineret i et tidligere scope.

For eksempel:
Fold kodeboks ind/udKode 

I dette eksempel vil variablen "navn" blive hentet ind af funktionen sigNavnet(), fordi den ikke har sin egen udgave af variablen.

Fold kodeboks ind/udKode 

I dette eksempel overskriver vi værdien af "navn" med Rasmus -- det betyder at når vi udenfor funktionen sigNavnet() vil udskrive navn, vil det også være Rasmus.

Fold kodeboks ind/udKode 

I det sidste eksempel her, vil der blive oprettet en lokal udgave af "navn" inde i funktionen der kun er til stede i den funktion. Udenfor funktionen vil navn stadig være = Per.

Derfor bruger man var -- du siger, at nu er der en ny variabel med det navn, i dette scope. Siger du ikke var, leder den efter en eksisterende variabel med navnet. Hvis den ikke kan finde nogen, så kan der ske sære ting.



Nu er der jo ikke nogen checkboxes der er afkrydset som default.

Så jeg ville nok lige teste list på det:

Fold kodeboks ind/udKode 


Det hjalp mig frem til at finde fejlen - det viste sig at IE vil have at man definerer variabler med "var" foran -.-*

Følgende kode fik jeg til at virke, hvis andre med samme problem i fremtiden skulle få brug for det:
Fold kodeboks ind/udJScript kode 





t