Avatar billede blood Nybegynder
09. juli 2001 - 21:40 Der er 12 kommentarer og
1 løsning

udskriv med \"document.write\"

Nu har jeg prøvet, og prøvet men jeg kan bare ikke få det til at funke.
Jeg sider her og prøvet at programere lidt i java script da jeg aldrig har kunne finde ud af det 100%

Jeg henter scriptet med \"<script src=\'http://localhost/sub/book/test.php></script>\" fra en anden side



I i test test.php har jeg følgene

----------------
    document.write(\'<SCRIPT LANGUAGE=\"JAVASCRIPT\">\')
    document.write(\'function tjek() {\')
    document.write(\'if( document.forms[0].fra.value.length == 0 ) {\')
    document.write(\'alert( \"Navn skal udfyldes.\" )\')
    document.write(\'return false\')
    document.write(\'}\')
    document.write(\'if( document.forms[0].besked.value.length == 0 ) {\')
    document.write(\'alert( \"Navn skal udfyldes.\" )\')
    document.write(\'return false\')
    document.write(\'}\')
    document.write(\'}\')
    document.write(\'</SCRIPT>\')

    document.write(\'<FORM ACTION=http://localhost/sub/book/ onSubmit=\"return tjek()\" METHOD=POST>\')
    document.write(\'<TABLE BORDER=\"0\" CELLSPACING=\"0\" CELLPADDING=\"0\">\')
    document.write(\'<TR>\')
    document.write(\'<TD>Navn:&nbsp;</TD>\')
    document.write(\'<TD><INPUT TYPE=text class=\"formen\" NAME=fra></TD>\')
    document.write(\'</TR>\')
    document.write(\'<TR>\')
    document.write(\'<TD>Email:&nbsp;</TD>\')
    document.write(\'<TD><INPUT TYPE=text class=\"formen\" NAME=email></TD>\')
    document.write(\'</TR>\')
    document.write(\'<TR>\')
    document.write(\'<TD>Hjemmeside:&nbsp;</TD>\')
    document.write(\'<TD><INPUT TYPE=text class=\"formen\" NAME=hp></TD>\')
    document.write(\'</TR>\')
    document.write(\'<TR>\')

------------
Og så videre.

Den udskriver form feltet fint, men når jeg klikker på \"Submit\" knappen tjekker den ikke om de to felter er tomme.
Hvorfor?
Avatar billede blood Nybegynder
09. juli 2001 - 21:42 #1
Glem det jeg har fået det til at virke :O)
Avatar billede erikjacobsen Ekspert
09. juli 2001 - 21:42 #2
Fordi man ikke med JavaScript kan lave ny JavaScript - man har vist kunnet i
visse tidligere browsere.
Avatar billede blood Nybegynder
09. juli 2001 - 21:44 #3
erikjacobsen >> Jeg ændret da bare

    document.write(\'<SCRIPT LANGUAGE=\"JAVASCRIPT\">\')
    document.write(\'function tjek() {\')
    document.write(\'if( document.forms[0].fra.value.length == 0 ) {\')
    document.write(\'alert( \"Navn skal udfyldes.\" )\')
    document.write(\'return false\')
    document.write(\'}\')
    document.write(\'if( document.forms[0].besked.value.length == 0 ) {\')
    document.write(\'alert( \"Navn skal udfyldes.\" )\')
    document.write(\'return false\')
    document.write(\'}\')
    document.write(\'}\')
    document.write(\'</SCRIPT>\')

til

function tjek() {
if( document.forms[0].fra.value.length == 0 ) {
alert( \"Navn skal udfyldes.\" )
return false
}
if( document.forms[0].besked.value.length == 0 ) {
alert( \"Navn skal udfyldes.\" )
return false
}
}
Avatar billede olebole Juniormester
09. juli 2001 - 22:27 #4
<ole>
Erik >> Det tror jeg da vist ikke er rigtigt. Du bør bare kunne escape \'script\':

<script language=\"JavaScript\">
str = \'<\\script language=\"JavaScript\">\';
str += \'alert(\"Darvs Erik...\")\';
str += \'<\\/script>\';
document.write(str);
</script>

/mvh
</bole>
Avatar billede erikjacobsen Ekspert
09. juli 2001 - 22:47 #5
Ja ja, det lille eksempel virker. Men jeg er løbet ind i ting, som \"burde\" virke, men
som ikke gør, når man laver javascript-kode på den måde. Og jeg kan ikke lige
reproducere det. Og jeg gider ikke bruge ekspertens søgefunktion...
Avatar billede olebole Juniormester
09. juli 2001 - 22:57 #6
Okay...jeg tror dig  ;o)
Avatar billede olebole Juniormester
09. juli 2001 - 22:58 #7
Jeg har nu lavet temmelig komplekse ting, der har virket - men sådan er det jo...pludselig løber man ind i besynderligheder  :)
Avatar billede jakoba Nybegynder
12. juli 2001 - 17:40 #8
Ja jeg har godt nok heller ikke andet end gode erfaringer med det.
men du bør følge oleboles råd om at \"knække\" html script-kommandoer så man ikke risikerer at browseren prøver at udføre dem:
    document.write(\"<script>alert(\'her er jeg\');</script>\");
bliver til
    document.write(\"<sc\"+\"ript>alert(\'her er jeg\');</sc\"+\"ript>\");
eller med escaping som ole demonstrerer.

og følg også det uudtalte råd: saml det hele sammen i een lang streng der så udskrives. istedet for at udskrive det lidt ad gangen med mange document.write() sætninger
    document.write( \'<\\script language=\"JavaScript\">\' );
    document.write( \'alert(\"Darvs Erik...\")\' );
    document.write( \'<\\/script>\' );
bliver til:
    document.write( \'<\\script language=\"JavaScript\">\'
                    + \'alert(\"Darvs Erik...\")\'
                    + \'<\\/script>\' );
eller med en mellemvariabel strengen akkumuleres i før udskrift.

mvh JakobA
Avatar billede olebole Juniormester
12. juli 2001 - 20:07 #9
Prøv for eksempel at køre dette dokument i din browser og prøv så at kalde \'skriv2()\' nede i body\'en. Så får du et indtryk af, hvilken forskel der er på de to metoder:

<html>
<head>
<script language=\"JavaScript\">
function skriv() {
    date = new Date();
    cStart = date.getTime();
    str = \"\";
    for (i=0; i<=1000; i++) {
        str += i+\"OleBole er en gammel pedant! ...eller...?<br>\\n\";
    }
    document.write(str);
    date = new Date();
    cEnd = date.getTime();
    alert(\"Eksekverings tid: \"+(cEnd-cStart)+\" msec\");
}

function skriv2() {
    date = new Date();
    cStart = date.getTime();
    for (i=0; i<=1000; i++) {
        document.write(\"OleBole er en gammel pedant! ...eller...?<br>\\n\");
    }
    date = new Date();
    cEnd = date.getTime();
    alert(\"Eksekverings tid: \"+(cEnd-cStart)+\" msec\");
}

</script>

</head>
<body>

<script language=\"JavaScript\">skriv();</script>

</body>
</html>

...tankevækkende - ikke sandt?  =o)
/mvh
Avatar billede olebole Juniormester
12. juli 2001 - 20:20 #10
Hov......den langsomme skriver ikke engang linienummeret med og alligevel er der en forskel på en faktor 4 hos mig med MacG3/NS4.08 - dog mindre i IE5. Prøv forskellige browsere på PC\'en...gider ikke lige selv flytte dokumentet over  :o)
/mvh
Avatar billede jakoba Nybegynder
12. juli 2001 - 23:02 #11
olebole >> du er da ikke så gevaldig gammel :-))
Avatar billede olebole Juniormester
12. juli 2001 - 23:05 #12
Hmmmmm....det var måske DET, der var det mest tankevækkende...(?)  *ROTFL*
Avatar billede olebole Juniormester
12. juli 2001 - 23:05 #13
*taaaak*
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