Avatar billede zyxep Nybegynder
23. marts 2006 - 09:40 Der er 10 kommentarer og
1 løsning

simple javascript virker ikke i firefox

hey..

jeg er igang med uddannelsen som web integrator og vi havde noget undervisning igår i javascript.. vores lærer lavede et meget simple script som lavede en fejl meddelse hvis man ik havde tastet noget ind i en formular..

koden ser sådan her ud..

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Untitled Document</title>
<style type="text/css">
div{color:#FF0000;
width:200px;}
</style>
<script language="JavaScript" type="text/JavaScript">
function validate()
{
//----- opret kontrolflag
//fornavn
flag1 = true;
fejl1.innerHTML = "";

//indsæt selv resten herunder!

//tlf
flag5 = true;
fejl5.innerHTML = "";

//email
flag6 = true;
fejl6.innerHTML = "";

//----------------------

// -- Tjek om fornavn indeholder mindst 2 tegn
if(document.getElementById("fornavn").value.length < 2)

{
    flag1 = false;
    fejl1.innerHTML = "*";
}
// --- slut på fornavn ---------------

// indsæt herunder de manglend felter



/* Her tjekker jeg på om tlf består af heltal og
at der er præcis 8 tegn.
(isNaN betyder 'is Not a Number', altså IKKE et heltal)
*/
if((isNaN(document.getElementById("tlf").value)) || (document.getElementById("tlf").value.length != 8))
{
    flag5 = false;
    fejl5.innerHTML = "Skriv 8 tal";
}
// --- slut på tlf ---------------

//tjek om email indeholder både @ og . (punktum)
if((document.getElementById("email").value.indexOf("@")==-1)  || (document.getElementById("email").value.indexOf(".")==-1)  )
{
    flag6 = false;
    fejl6.innerHTML = "*";   
}
// --- slut på email ---------------

//----- kontroller om der er flag der er lagt ned
    if(flag1 && flag5 && flag6)
    {
        return true; // Returner true når  alt er ok
    }
    else
    {
        return false; // returner false når der er fejl
    }
//---------------------------------------------------
}
</script>

</head>

<body>
<form name="form1" method="post" action="" onSubmit="return validate()">
  <table width="200" border="0">
    <tr>
      <td>fornavn</td>
      <td><input type="text" name="fornavn" id="fornavn"></td>
      <td><span id="fejl1"></span></td>
    </tr>
    <tr>
      <td>efternavn</td>
      <td><input type="text" name="efternavn" id="efternavn"></td>
      <td>&nbsp;</td>
    </tr>
    <tr>
      <td>vej</td>
      <td><input type="text" name="vejnavn" id="vejnavn"></td>
      <td>&nbsp;</td>
    </tr>
    <tr>
      <td>postnr</td>
      <td><input type="text" name="husnr" id="husnr"></td>
      <td>&nbsp;</td>
    </tr>
    <tr>
      <td>tlf</td>
      <td><input type="text" name="tlf" id="tlf"></td>
      <td><div id="fejl5"></div></td>
    </tr>
    <tr>
      <td>email</td>
      <td><input type="text" name="email" id="email"></td>
      <td><div id="fejl6"></div></td>
    </tr>
    <tr>
      <td>&nbsp;</td>
      <td><input type="submit" name="Submit" value="Submit"></td>
      <td>&nbsp;</td>
    </tr>
  </table>
  <p>&nbsp;</p>
</form>
<p>&nbsp;</p>
<p>&nbsp; </p>
</body>
</html>


hvorfor virker den ikke i firefox når den fint virker i internet explorer.

http://negerb0rn.dk/byensguf/test.htm er filen online..
Avatar billede fixxxer Nybegynder
23. marts 2006 - 09:49 #1
Øhm, påstår din lærer virkelig at du kan bruge innerHTML på en variabel af typen boolean?

flag1 = true;
fejl1.innerHTML = "";

Jeg kan godt forstå at Firefox brokker sig !-)

  -- og er ikke overaskset over at IE ikke brokker sig.
Avatar billede fennec Nybegynder
23. marts 2006 - 09:55 #2
Du bliver nød til at lave en rigtig forbindelse til de enkelte span elementer:
document.getElementById('fejl1').innerHTML = "";
Avatar billede fennec Nybegynder
23. marts 2006 - 09:57 #3
fixxxer >>
flag1 og fejl1 er ikke den samme variabel, selv om de ligner hinanden meget :o)
Avatar billede fixxxer Nybegynder
23. marts 2006 - 10:06 #4
Ja goddaw!

Tak for at du påpegede det, jeg har fuldstændig overset den lille forskel.
Avatar billede fennec Nybegynder
23. marts 2006 - 10:07 #5
Forklaringen er at IE gætter sig til at "fejl1" er elementID'et, og derfor selv laver en getElementById(), hvilket jo gør vores kode kortere.
De andre browsere har selvfølgelig ikke dette indbygget, så der skal vi selv få fat i elementet.

Det er altså en (af mange) IE only funktionaliteter, man skal holde sig fra.
Avatar billede fixxxer Nybegynder
23. marts 2006 - 10:12 #6
Så kan man jo næsten blive helt urolig, hvis der er nogen der faktisk underviser i, at bruge netop sådanne funktionaliteter - hvis det altså er tilfældet.
Avatar billede zyxep Nybegynder
23. marts 2006 - 10:20 #7
fennec

lav svar :D det virkede
Avatar billede fennec Nybegynder
23. marts 2006 - 10:31 #8
fixxxer >>
Havde selv en lærer, som gjorde noget ligende, da jeg gik i skole. Jeg blev da også meget skuffet over det, da jeg opdagede hvordan virkligheden er...

Vi kan kun være enige om, at det er uhygelig, at nogle lærer ikke ved bedre :(
Avatar billede schwarz84 Nybegynder
23. marts 2006 - 11:03 #9
Du kan også give formen med som argument til funktionen, så du skriver:
<form name="form1" method="post" action="" onSubmit="return validate(this)">

Så kan du erklære metoden sådan her:
function validate(form)

På den måde kan du så udpege elementerne ud fra form. Det er et spørgsmål om hvad du foretrækker, men jeg synes at det giver pænere kode at gøre dette i stedet for at lave en masse getElementById. Det din lærer gør er i hvert fald direkte forkert...
Avatar billede fennec Nybegynder
23. marts 2006 - 11:10 #10
schwarz84 >>
Du kan ikke få fat i et <span> element fra formen, og det er jo netop det, der er problemet her...
Avatar billede fixxxer Nybegynder
23. marts 2006 - 15:04 #11
Og i øvrigt vil jeg mene at man skal holde sig til DOM'en..
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