Avatar billede joch Nybegynder
05. november 2001 - 15:07 Der er 13 kommentarer og
1 løsning

do - until

Det er rart at komme i gang med noget javascript. Men der dukker godt nok mange spørgsmål frem!

Jeg er jo ved at splitte en tekst op, men det skal naturligvis ikke være midt i et ord. Derfor skal jeg finde et mellemrum at dele i...

Hvordan laver men et loop?

do
    if (tx.substring(i, i+3260) <> \" \") {
    i += 1}
until (tx.substring(i, i+3260) = \" \")
Avatar billede jumper Nybegynder
05. november 2001 - 15:09 #1
var minTekst = \"hej med dig\";
var mitArray = minTekst.split(\" \");

/Thor
Avatar billede jumper Nybegynder
05. november 2001 - 15:11 #2
Avatar billede joch Nybegynder
05. november 2001 - 15:13 #3
Det hjælper vist ikke til min kode. og ellers skal jeg vist have lidt mere hjælp. Min kode ser nu ud som følger:

var side = new Array();
var tx = document.FormName.textareaName.value;
for (var i=0; i<tx.length; i+=3260 ) {

loop
    if (tx.substring(i, i+3260) <> \"\") {
    i += 1}
do until (tx.substring(i, i+3260) = \"\")

side[side.length] = tx.substring( i, i+3260 );
}
var sider = side.length;
if (sider == 0) {
    side[0] = \"\";
    sider =1}

alert( \"Teksten blev opdelt i \" +sider +\" sider.\\nDu skal derfor Klikke OK - \"+sider +\" gang(e) når vinduet UDSKRIV kommer frem!\"  );


for (i=1;i<=sider;i++) {

win = window.open(\"\",\"win\");
var PrintStr = temp1Str + side[i-1] + temp3Str;
win.document.body.innerHTML = PrintStr;
win.print();
win.close();}
Avatar billede joch Nybegynder
05. november 2001 - 15:19 #4
Der skal naturligvis være mellemrum:

loop
    if (tx.substring(i, i+3260) <> \" \") {
    i += 1}
do until (tx.substring(i, i+3260) = \" \")
Avatar billede joch Nybegynder
05. november 2001 - 15:22 #5
Det skal vel så også være: (i+3260, 1)
Avatar billede jakoba Nybegynder
05. november 2001 - 15:26 #6
check lige med manualen
http://developer.netscape.com/docs/manuals/js/client/jsref/index.htm
før du skriver VBscript kode som:

loop
    statements
do until ( betingelse )

Javascript bruger noget nær C syntax sp det hedder:

do {
    statements
} while ( ! betingelse );  //NB: den omvendte betingelse.

Jeg ville skrive noget i retning af:

var side = new Array();
var tx = document.FormName.textareaName.value;
var j;
for (var i=0; i<tx.length; i=i+j ) {
    //brug indrykninger! både i VBscript og javascript.
    j = i +3260;
    while ( tx.charAt(j) != \" \" ) {
        // kan gå galt hvis over 3259 bogstaver i rap uden mellemrum
        j = j -1;
    }
    side[side.length] = tx.substring( i, j );
}; //endfor

var sider = side.length;
if (sider == 0) {
    side[0] = \"\";
    sider =1}

alert( \"Teksten blev opdelt i \" +sider +\" sider.\\nDu skal derfor Klikke OK - \"+sider +\" gang(e) når vinduet UDSKRIV kommer frem!\"  );

husk også at i betingelser skal der bruges == for at teste om to værdier er ens.  = vil altid prøve at assigne.

mvh JakobA
Avatar billede jakoba Nybegynder
05. november 2001 - 15:32 #7
    substring(i+3260, 1)
betyder fra index i+3260 til men ikke med index 1  (ikke så godt)

    substr( i+3260, 1 )
betyder de første 1 bogsaver fra index i+3260  (nok det du mener)

Den slags småting er ret frustrerende når man skal \'skifte sprog\' :-))
Avatar billede joch Nybegynder
05. november 2001 - 15:36 #8
Hej Jaboba

Ja! du har luret mig - Jeg har i flere år programmeret i VB. Det er lidt svært at komme i gang med JavaScript - når man bruger af sine erfaringer fra VB.

Men det her virker - Endnu engang tak for hjælpen.
Og Tak for linket!

/Joch
Avatar billede joch Nybegynder
06. november 2001 - 09:48 #9
Hej JacobA

Den driller mig ret meget nu...

Med det nye script laver den altid to sider og hvis man f.eks. kun skriver 123 - smasker scriptet!!!

I samme omgang driller Netscape mig - Det skulle da ellers også virke i Netscape 4.7 ikke???
Avatar billede jakoba Nybegynder
06. november 2001 - 11:40 #10
Det er også surt at debugge sin egen kode. Især når der er så mange logiske fejl:
var side = new Array();
var tx = document.FormName.textareaName.value;
var j;
for (var i=0; i<tx.length; i=i+j ) {    // galt. j er jo et index
    j = i +3260;                        // galt. rammer langt udover enden
    while ( tx.charAt(j) != \" \" ) {    // galt. vil ALTID pille sidste ord af
        j = j -1;                        // OK, men ret usmart
    }
    side[side.length] = tx.substring( i, j ); // OK
}; //endfor

Så lad os lave det om til:

var side = new Array();
var tx = document.FormName.textareaName.value;
var j;
for (var i=0; i<tx.length; i=j+1 ) {    // OK. kvitter det fundne blanktegn
    j = i +3260;                        // ok hvs der testes bagefter
    if ( j >= tx.length {              // dette er sidste side
        j = tx.length;
    } else {
        j = tx.lastIndexOf( \" \", j );  // sidste \" \" foran det givne index
    };
    side[side.length] = tx.substring( i, j );
}; //endfor

De fleste af dem har du nok selv fundet.

mvh JakobA
Avatar billede joch Nybegynder
06. november 2001 - 12:15 #11
Tak - JakobA

Jeg tester den senere - så lave jeg også lidt point for det.

Som jeg kan forstå på et af mine andre spørgsmål vedr. Netscape 4.7 - Kan jeg godt grave et stort dybt hul til mit projet, hvis det skal understøtte 4.7!!!

http://www.eksperten.dk/spm/130201

Er du enig i det?
Avatar billede jakoba Nybegynder
06. november 2001 - 12:43 #12
Jeg er altid enig i at ting bør være mere crossbrowser :-))

Men vær lidt mere nærig med dine points. du bliver jo helt blanket af sådan som du sprøjte points til alle sider for tiden.

mvh JakobA
Avatar billede joch Nybegynder
06. november 2001 - 12:45 #13
Du har ret!

Men jeg syntes også det er pisse svært at komme i gang med!

- og hvor skal man så sætte nivauet???
Avatar billede jakoba Nybegynder
06. november 2001 - 12:54 #14
Tjae, altid en vurderingssag. 60 er for SVÆRE spørgsmål. Så 30 og 15 er nok mere niveauet for dine.

Og lad være at acceptere før du har testet og fået det til at virke (som her :) ), ingen grund til at punge ud for et direkte forkert svar ( som her :( ).

De nødvendige uddybende spørgsmål hører med i samme tråd.

mvh JakobA
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