Avatar billede anhansen Nybegynder
06. maj 2004 - 11:21 Der er 36 kommentarer og
1 løsning

Problemer med javascript scirpt.

Hej.

Jeg kan ikke få mit script til at køre. Jeg har 3 script blokke på siden, 2 med link til fil, og et med kode. På onload kører jeg det script med koden. Men det virker ikke? Er der nogle der kan forklare hvorfor?

Her kommer et uddrag af koden:

    <title>Isabell Kristensen Show 2004 i Jomfruanegade</title>
            <script type="text/javascript" language="javascript">
            function script(){
                var tal = document.all.Button1.fejl;
                if(tal == 1)
                    alert('Din stemme er nu registreret');
                else if(tal == 2)
                    alert('Din email har tidligere været brugt. Stemmen er derfor ikke registreret');
                //if(tal = 0)
                    //do nothing;
            }
       
            </script>
    </head>
    <script language="JavaScript1.2" src="menu_data.js"></script>
    <script language="JavaScript1.2" src="scripts/dqm_script.js"></script>
    <body onload="script()" topmargin="0" leftmargin="0" rightmargin="0" bottommargin="0" marginwidth="0" marginheight="0">

Håber der er nogle der kan hjælpe mig.

Er der nogle regler omkring at loade scripts og skrive dem?
Avatar billede and_ Nybegynder
06. maj 2004 - 11:22 #1
husk semi

onload="script();"
Avatar billede and_ Nybegynder
06. maj 2004 - 11:23 #2
og vælg et andet navn end lige script
Avatar billede and_ Nybegynder
06. maj 2004 - 11:24 #3
Og din funktion er forkert:

            function script()
            {
                var tal = document.all.Button1.fejl;
                if(tal == 1)
                    {
                    alert('Din stemme er nu registreret');
                    }
                else if(tal == 2)
                    {
                    alert('Din email har tidligere været brugt. Stemmen er derfor ikke registreret');
                    }
            }
Avatar billede mm12010 Nybegynder
06. maj 2004 - 11:27 #4
hvad refererer du til med: document.all.Button1.fejl ?-)

and_ >> funktionen fejler ikke noget udover det med navnet som du oz siger !-)
Avatar billede and_ Nybegynder
06. maj 2004 - 11:29 #5
Du skal da altid definere if-sætninger i Jscript med {} eller har jeg misforstået noget?
Avatar billede anhansen Nybegynder
06. maj 2004 - 11:34 #6
ok, en ad gangen.. :_)
and-> semikolon er ikke så vigtigt i dette tilfælde, men for god ordens skyld sat på. Men det hjælper ikke noget. Det virker lokalt hvor jeg ikke har de to andre script, dvs. de fejler. Kan det have noget betydning?)
and->2-3: Navnet er vel egentlig ligegyldigt - med mindre der selvfølgelig er en der hedder script() i en af de to jeg loader. Har ændret navnet, hjælper ikke. Og ang. fejl i funktionen så tager en if uden {} bare den næste linie og ikke mere. Så funktionen er rigtig.
mm12010-> Button1.fejl er bare en attribut jeg har sat på. Som jeg kan sætte fra min asp.net cs fil. Jeg bruger den bare til at registrere state. En hurtig nem måde.
Måske ikke helt fin i kanten.

Men som sagt, så virker det lokalt, men når jeg smider det ud på serveren i et underbibliotek til et website så virker det ikke?

Scriptene som jeg loader virker fint.
Avatar billede anhansen Nybegynder
06. maj 2004 - 11:35 #7
and-> du har misforstået lidt. Det andet virker fint. Den tager som sagt bare en linie med, dvs hvis jeg skriver:
if(tal == 0)
  dosomething();
dosomethingelse(9;

så bliver dosomethingelse() altid udført - dosomething() kun hvis tal er 0.
Avatar billede anhansen Nybegynder
06. maj 2004 - 11:36 #8
9 = )
;-)
Avatar billede and_ Nybegynder
06. maj 2004 - 11:36 #9
det er jo ikke lige meget, hvis det er et reserveret ord ;)
Avatar billede anhansen Nybegynder
06. maj 2004 - 11:40 #10
nej, men det mener jeg ikke det er. Og må jeg iøvrigt ikke lave en funktion der int()? Det er jo bare variablen int der er reserveret? Men det er en anden diskussion, og løser ikke mit problem.. ;-) Men har omdøbt den til scriptANH() virker stadig ikke.
Avatar billede mm12010 Nybegynder
06. maj 2004 - 11:40 #11
prøv:

  var tal = parseInt(document.all.Button1.fejl);

og så skal det lige noteres at document.all kun virker i IE og opera
Avatar billede and_ Nybegynder
06. maj 2004 - 11:40 #12
har du ikke sti, som vi kan kigge på?
Avatar billede anhansen Nybegynder
06. maj 2004 - 11:44 #13
til sitet?
Avatar billede anhansen Nybegynder
06. maj 2004 - 11:45 #14
det er www.appetize.dk/ik2004 under velgørenhed->stem.
Det skulle gøre at der popper en alert boks op når stemmen er registreret.
Avatar billede anhansen Nybegynder
06. maj 2004 - 11:48 #15
mm-> har prøvet med parseInt nu. Ingen forskel. Men som sagt virker koden også - bare ikke sammen med de andre scripts? Det er mere det jeg er ude efter at få forklaret. Alt. er jo at ligge koden i en fil og så gøre ligesom de andre. Det virker måske?
Avatar billede and_ Nybegynder
06. maj 2004 - 11:55 #16
Hvad med at ligge din indikator i et hidden felt.....
Det er en sjov måde du laver det på synes jeg ;)
Avatar billede anhansen Nybegynder
06. maj 2004 - 11:56 #17
ja, det ved jeg godt. Det var bare lige hurtigt. Det kan selv. godt have noget at gøre med at "fejl" ikke er en w3c godkendt attribut til button? Prøver lige med en "hidden" button ved siden af med value i stedet.. :-)
Avatar billede and_ Nybegynder
06. maj 2004 - 12:00 #18
og som mm siger: undgå denne: document.all.

referer istedet med document.forms[0] (mener jeg den hedder)
Avatar billede anhansen Nybegynder
06. maj 2004 - 12:02 #19
Det ændrer desværre ikke noget med en ny button hvor jeg bruge value. Samme problem
Avatar billede and_ Nybegynder
06. maj 2004 - 12:06 #20
lige nede under dit form-tag:

<input type="hidden" name="minStatus" value="2">

og ændrer jscriptet til:

            function script()
            {
                var tal = document.afstemning.minStatus;
                if(tal == 1)
                    {
                    alert('Din stemme er nu registreret');
                    }
                else if(tal == 2)
                    {
                    alert('Din email har tidligere været brugt. Stemmen er derfor ikke registreret');
                    }
            }
Avatar billede mm12010 Nybegynder
06. maj 2004 - 12:17 #21
var tal = parseInt(document.afstemning.minStatus.value);
Avatar billede anhansen Nybegynder
06. maj 2004 - 12:35 #22
jeg forstår bare ikke hvorfor det ikke kan virke derude på serveren, når det virker lokalt. Det må da være noget med syntax rundt om koden. Koden virker jo. Det er samme browser. Jeg synes det er underligt?
Avatar billede and_ Nybegynder
06. maj 2004 - 12:39 #23
har du prøvet det nye?
Avatar billede anhansen Nybegynder
06. maj 2004 - 12:39 #24
Scriptet bliver slet ikke kørt.

Nu har jeg sat :
document.forms[0].TextBox1.value ="registreret";
ind som første linie i funktionen.

Det sker der ikke noget ved?
Avatar billede and_ Nybegynder
06. maj 2004 - 12:45 #25
ikke online... forsøger jo at følge lidt med.... har taget dette fra din kode og rettet det til...

Så skal du jo bare lige rette din serverside kode til så den indlæser den rigtige værdi i hidden-feltet....

prøv:

        <meta name="GENERATOR" content="Microsoft FrontPage 6.0">
        <link rel="stylesheet" type="text/css" href="core.css">
            <title>Isabell Kristensen Show 2004 i Jomfruanegade</title>
            <script type="text/javascript" language="JavaScript1.2">
            function scriptANH(){
                var tal = document.afstemning.erDerStemt.value;
                if(tal == "ja"){
                    alert('Din stemme er nu registreret');}
                else if(tal == "tidligere"){
                    alert('Din email har tidligere været brugt. Stemmen er derfor ikke registreret');}
                //if(tal = 0)
                    //do nothing;
            }
       
            </script>
    </head>
    <script language="JavaScript1.2" src="menu_data.js"></script>
    <script language="JavaScript1.2" src="scripts/dqm_script.js"></script>
    <body onload="scriptANH();" topmargin="0" leftmargin="0" rightmargin="0" bottommargin="0" marginwidth="0" marginheight="0">
        <form name="afstemning" method="post" action="afstemning.aspx" language="javascript" onsubmit="ValidatorOnSubmit();" id="afstemning">
<input type="hidden" name="erDerStemt" value="nej">
<input type="hidden" name="__VIEWSTATE" value="dDwxMTIxMzkxNDgzO3Q8O2w8aTwxPjs+O2w8dDw7bDxpPDU+Oz47bDx0PHQ8cDxwPGw8RGF0YVRleHRGaWVsZDtEYXRhVmFsdWVGaWVsZDs+O2w8bW9kdGFnZXI7aWQ7Pj47Pjt0PGk8Nz47QDxEYW5zayBGbHlndG5pbmdlaGrDpmxwO0RhbnNrIEhhbmRpY2FwIEZvcmJ1bmQ7RGFuc2sgUsO4ZGUgS29ycztGb2xrZWtpcmtlbnMgTsO4ZGhqw6ZscDtMYW5kc29yZ2FuaXNhdGlvbmVuIFJlZCBCYXJuZXQ7TXVza2Vsc3ZpbmRmb25kZW47VW5pY2VmIERhbm1hcms7PjtAPDU7Njs3Ozg7MTE7OTsxMDs+Pjs+Ozs+Oz4+Oz4+Oz5DEJhbfSdQIuV23gg24XY0PpbAyg==" />
         
<script language="javascript" src="/aspnet_client/system_web/1_0_3705_288/WebUIValidation.js"></script>
Avatar billede anhansen Nybegynder
06. maj 2004 - 12:57 #26
Problemet er: Når de to linier med <script ...src="... " er med, og den kan finde de to filer, så vil den ikke køre det andet script? hvordan kan det være?

Kan der være defineret noget i dem som "overtager" onload eventen?
Avatar billede anhansen Nybegynder
06. maj 2004 - 13:01 #27
Det er det der er galt. Har fundet stedet i de andre script hvor den overtager onload. Skal så bare ha fundet en måde at try-catch på der, så scriptet ikke fejler på de andre sider hvor mit script ikke er der...
:-)
Avatar billede anhansen Nybegynder
06. maj 2004 - 14:06 #28
Tak for hjælpen begge to. Vi kom langt omkring for at finde ud af at der intet var galt med scriptet.. Nu virker det, efter at have sat ind i menuscriptet at den lige skal kalde script() ved onload.
Så skulle script(){} bare lige ligges ind på alle de andre sider, men det var hurtigt overstået.
Avatar billede roenving Novice
07. maj 2004 - 04:22 #29
Tak ?-)

-- hvadfor tager du dine point selv, det er da ingen tak !-|

-- og så kan det ikke stærkt nok frarådes at bruge ord og bogstav-sammensætninger, som bruges på anden måde som identifiers, det være sig på variabler, funktionsnavne, name-attributter eller id's ...

En klassisk fejl, som jeg har måttet kigge på ganske ofte er at kalde et form-felt for name ...

-- i sig selv overhovedet ikke problematisk, men når man så blander det sammen med javascript, oftest i forbindelse med en validering, støder den identifier altså sammen med at en form er født med en name-property, så det er tåbeligt, grænsende til det debile, at gøre sådan !-)
Avatar billede anhansen Nybegynder
09. maj 2004 - 22:12 #30
én ting ad gangen.. :-)

Jeg tager mine points selv. Tak for hjælpen, mener jeg, da and har gjort en indsats for at hjælpe. Men fakta er at alt hvad han har skrevet ikke har været noget der var galt med scriptet, men bare har ledt mig på afveje. Jeg ved ikke om jeg skulle have givet pointsene, det kan godt være, men det gjorde jeg altså ikke.

Hvis jeg hjælper nogle herinde, og ikke kommer med at svar de kan bruge, og de selv vender tilbage og siger at de har fundet løsningen, et helt andet sted, så ville jeg ikke forvente at få points for at have haft en hyggelig samtale. Men det er måske forkert. Hvis and synes noget andet, må han gerne skrive, så skal jeg glædeligt oprette et "fake" spørgsmål og give ham pointsene. Men så skal mm måske dele? Efter en endnu ikke helt defineret nøgle.. Så det gør vi måske...

Ang. det debile. Så har jeg vist ikke kaldt nogle forms for 'name'. Jeg har brugt name attributten men det er vel ikke helt debilt.. Det er ihvertfald hvad vs.net gør pr. default.

Men godt nok at få slået det fast at det er grænsende til debilt at gøre det.......

Og så for en god ordens skyld... I min første kommentar i tråden fortæller jeg at mit script virker fint, og det ikke er der fejlen er. Alligevel bliver and ved med at lede efter fejl i mit script. Det kan godt være det er mig der er lidt off... Men folk må godt nogle gange læse det man skriver inden de begynder at lede efter manglende dit og dat og navne de tror er reserverede osv...

Fakta er: Mit script virkede, virker, og vil blive ved med at virke. Problemet var at der i en af de scripts der er angivet med src, var en funktion som "overtog" onload eventet, og derfor kunne jeg ikke kalde min funktion via dette.

Men stadig, og det mener jeg, tak for at and og mm gad at forsøge at hjælpe. :-)
Avatar billede roenving Novice
09. maj 2004 - 22:26 #31
;O)

-- jeg brugte eksemplet, fordi det var tæt på at være parallelt med dit, som (næsten !-) med garanti ikke vil udløse fejl direkte, og nok kun kan gøre det i helt specielle tilfælde ...

-- og grunden til, at jeg skrev sådan, var, at dette forums form med point-system lægger op til, at man honorerer, når nogen har gjort en indsats !-)

Jeg føler sjældent trang til at brokke mig over, at folk beholder deres point, og havde også registreret, at and_ mest havde vildskud i bøssen, så måske var der en sukkermad, som lige havde fået noget gult vådt noget ...

Men en utrolig vigtig detalje, jeg havde at berette !o]
Avatar billede and_ Nybegynder
09. maj 2004 - 22:31 #32
roenving jeg siger tak for din kommentar... Takker ;)

anhansen >> Nu vil jeg ikke kalde mine forsøg på at hjælpe dig for vildskud... ja, undskyld, jeg følger mig sgu lidt til grin med den kommentar du ´giver her...

Point er ikke vigtig for mig, men der bekymrende kodning du laver...
Avatar billede anhansen Nybegynder
09. maj 2004 - 23:12 #33
Først og fremmest undskyld. Det var ikke ment som at du skal føle dig til grin. Der var også nogle gode ting i den. F.eks vidste jeg ikke at document.all kun virkede i ie. Og at man ellers skulle bruge forms.
Men jeg forstår ikke hvad der er så bekymrende om min kode.
1. Jeg laver en funktion der hedder script.. Meget sigende da det er et lille script, og script er ikke noget reserveret ord, det være sig i javascript, c#, html, css som er de 4 sprog der indgår i min side.
2. Du vidste ikke at man godt kan skrive en if uden {}, men sådan er det nu engang.
3. Jeg sætter selv værdien af det tal jeg skal bruge, og behøver vel som sådan ikke at parse det, da javascript kun har var, og ikke string, int osv. Som i php finder det selv ud af det.
4. Du synes ikke jeg bør bruge min button, og give den en ekstra attribut. Det er måske fair nok, og indrømmet, din løsning med det hidden felt glider nok bedre gennem w3c validatoren.. ;-)
Men altså stadig, jeg skrev mit script virkede, men du blev ved med at prøve at finde fejl på det.

Ked af at det skulle ende sådan.. hvis jeg havde forudset det, havde jeg da bare givet pointsene... :-(

Godnat...
Avatar billede roenving Novice
10. maj 2004 - 00:18 #34
>>and_

Måske skulle jeg have uddybet lidt mere til dig, men der er ingen tvivl om, at du nogle gange kommer med noget helt ubetydeligt/fejlagtigt som 'rettelse'

06/05-2004 11:24:59, 06/05-2004 11:36:23

-- men et par gange med noget god kodestil

06/05-2004 11:22:58, 06/05-2004 11:23:21

-- og noget vrøvl

06/05-2004 12:00:14 (document.forms[] og document.all[] kan ikke sammenlignes, hvis man skal sammenligne er det document.getElementById som nærmest kan sammenlignes med .all !-)

-- du har også fuldstændig ret en gang:

06/05-2004 12:06:03

Ordet vildskud kan diskuteres, men jeg forstår godt anhansens udsagn:

'Men fakta er at alt hvad han har skrevet ikke har været noget der var galt med scriptet, men bare har ledt mig på afveje.'
Avatar billede olebole Juniormester
10. maj 2004 - 01:24 #35
<ole>

anhansen >> Lige en enkelt ting - uden at ville deltage i skænderierne i øvrigt:
Der er himmelvid forskel på PHP, som har en dårlig (grænsende til elendig) variabel-håndtering og JavaScript, der kun har en halvskidt variabel-håndtering  :)

PHP:
  $streng = "123";
  $tal = 11;
  print $streng+$tal; // Returnerer skrupskøre 134 ...!

JavaScript;
  var streng = "123";
  var tal = 11;
  alert( streng+tal ); // Returnerer mere begavet 12311  :)

At det så ikke er nødvendigt at parse en felt-værdi som integer, er en anden ting. JavaScript er dog heldigvis ikke så dårlig til at behandle variabler, som PHP er - og man kan kun håbe på, drengene bag PHP får øjnene op for det uhensigstmæssige i at 'tørre røv' på brugerne af sproget, men lader os tænke selv  ;o)

/mvh
</bole>
Avatar billede olebole Juniormester
10. maj 2004 - 01:29 #36
PS: Selvom jeg formodentlig ville blive stillet op ad en mur og skudt i et Linux-miljø, vil jeg nu alligevel påstå, at PHP i forbløffende grad minder om MS-software - i det mindste om IE. IE prøver også at gætte sig frem til, hvad koderen mener, når han skriver noget vrøvl - og det gør PHP desværre også (selvom meget heldigvis har ændret sig siden de første versioner)  :)
Avatar billede olebole Juniormester
10. maj 2004 - 01:42 #37
Faktisk skulle man i PHP kunne type-cast'e og type-juggle ... mmmmmmmmm ... men prøv lige:

$tal = 123;
$tal2 = 23;
print $tal+$tal2;

$tal3 = (string) $tal;
print $tal3+$tal2;

settype($tal, "string");
print $tal+$tal2;

De vil alle sammen returnere 146, hvilket jo må siges at være temmelig elendig håndtering af variabler.
Nå, men det var en helt anden historie  ;o)
/mvh
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester

IT-JOB