Avatar billede hansjacob Nybegynder
20. juli 2001 - 01:29 Der er 13 kommentarer og
1 løsning

Tilføjelse af String object

Hej

Hvordan putter man to tekst strenge sammen?

written = new String(\'\')

function writeon(letter) {

        written += letter //HER VIRKER DET IKKE
        email = check(written)

    if(  email != \"FALSE\") {
        alert(\'email fundet\')
        document.emailform.to_email.value = email
        document.emailform.to_email.select()
    }
    else {
        alert(\'ikke fundet\')
        document.emailform.to_email.value = written.value.toString()   
    }

}

Jeg samler en streng op i en teksboks, som så skal lægges til den tidligere indtastede strengværdi. Hvordan gøres det?
Avatar billede euroman28 Nybegynder
20. juli 2001 - 01:32 #1
written = written + letter
Avatar billede jakoba Nybegynder
20. juli 2001 - 01:45 #2
hvis du blot nøjes med

var written = \"\";  // istedet for  new String(\"\");

vil
      written += letter;  // også virke.
Avatar billede jakoba Nybegynder
20. juli 2001 - 02:00 #3
Det er forskel på en strengkonstant og et streng objekt

var strengKonstant = \"alert(\'hej\');\";
var strengObjekt = new String( \"alert(\'hejsa\')\" );

strengkonstanter kan lægges sammen
    strengKonstant += strengKonstant;
nu vil
    eval( strengKonstant ); // fyrer to alerts af der siger \"hej\"

for at forlænge et strengobjekt må man bruge String.concat() metoden:
    strengObjekt.concat( strengKonstant );
nu vil 
    alert( eval( strengObjekt ) ); // giver een alert \"alert(\'hejsa\');alert(\'hej\');\"
    eval( strengObjekt.valueOf );  // giver 2 alerts \"hejsa\" og \"hej\"

mvh JakobA
Avatar billede jakoba Nybegynder
20. juli 2001 - 02:02 #4
ups.  () efter valueOf , det er en metode
  eval( strengObjekt.valueOf() );  // giver 2 alerts \"hejsa\" og \"hej\"
Avatar billede hansjacob Nybegynder
20. juli 2001 - 17:13 #5
Nu har jeg prøvet at ultra forsimple mine koder. Men det virker stadig ikke. Jeg kan ikke forstå hvorfor det her ikke virker:

function writeon(letter) {

    written.concat(letter)  //skal lægges sammen

    temp = \"letter.value.toString()\"
    alert(temp + \" : \" + eval(temp) )
    temp = \"written.value.toString()\" //HER SIGER DEN written.value ER NULL ELLER IKKE ET OBJECT
    alert(temp + \" : \" + eval(temp) )
}

Hvis jeg alternativt bruger letter.valueOf() som foreslået laver den ligeledes fejl.
med letter.valueOf //uden parantheser bliver undefined, mens written.valueOf siger noget med native kode...

Jeg forstår det ikke.
Avatar billede jakoba Nybegynder
20. juli 2001 - 17:28 #6
written er et string objekt og String har ikke nogen value attribut.

Lad være med nogensinde at bruge de der sting objekter!
og sæt semikolonner alle de steder det er lovligt.

var written = \'\';            // bare en string konstant (med ; efter)

function writeon(letter) {

    written += letter;      //det VIRKER
    var email = check(written);

    if ( email != \"FALSE\") {
        alert(\'email fundet\');
        document.emailform.to_email.value = email;
        document.emailform.to_email.select();
    }
    else {
        alert(\'ikke fundet\');
        document.emailform.to_email.value = written.value.toString(); 
    };
};

Det eneste sted jeg kender hvor det kan være nyttigt at bruge et string objekt er ved overførsel af string parametre, og selv der kan man undgå dem på anden vis.

men dine indrykninger er gode. hold fast i dem.

mvh JakobA
Avatar billede roenving Novice
20. juli 2001 - 17:38 #7
>>jakoba: nå, du er stadig vågen *gg*

>>hanajacob : Som JakobA siger og en tilføjelse kunne være: sæt i hvert fald ; de steder, hvor det er ulovligt ikke at sætte dem (i princippet fjerner (burde fjerne) java al whitespace, før det fortolkes og køres, så linjeskift og sådan noget l... virker ikke som kommando/statement-deler.

;~}
jes
Avatar billede roenving Novice
20. juli 2001 - 17:39 #8
:-[
javascript selvfølgelig -- ikke java
Avatar billede jakoba Nybegynder
20. juli 2001 - 17:44 #9
vågen og vågen :). Jeg overså ihvertfald:
        document.emailform.to_email.value = written.value.toString();
lav den om til:
        document.emailform.to_email.value = written;
Avatar billede hansjacob Nybegynder
28. juli 2001 - 19:17 #10
Hvordan får jeg så længden på strengen ud, når det nu ikke er et object?

written.length virker ikke. Heller ikke written.length().
Avatar billede jakoba Nybegynder
28. juli 2001 - 20:07 #11

var written = \"abcdefghij\";
alert( written.length );

skulle meget gerne give en alert der siger: 10

mvh JakobA
Avatar billede jakoba Nybegynder
28. juli 2001 - 20:10 #12
Det er noget med at  strengkonstanten  midlertidigt bliver lavet om til et opbjekt når man bruger den somom den var et.
du kan sågar sige:
alert( \"abcdefghij\".length );
Avatar billede jakoba Nybegynder
28. juli 2001 - 20:11 #13
Ups. opbjekt -> string objekt
Avatar billede hansjacob Nybegynder
29. juli 2001 - 10:25 #14
Tusind tak for hjælpen. Jeg fandt vist nok også ud af lidt selv, nemlig at strengen blev afleveret fra indtastningen som et objekt og linien letter = letter.value derfor var nødvendig.
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