2010-07-14 4 views
5

Wie kann ich einen String-Wert als Referenz in Javascript übergeben.Wie übergeben Sie einen String-Wert als Referenz in Javascript und ändern Sie es dort

Ich möchte diese Art von Funktionalität.

//Library.js 
    function TryAppend(strMain,value) 
    { 
    strMain=strMain+value; 
    return true; 
    } 

    //pager.aspx 

    function validate() 
    { 
    str="Checking"; 
    TryAppend(str,"TextBox"); 
    alert(str); //expected result "Checking" TextBox 
    //result being obtained "Checking"  
    } 

Wie Sie dies tun. ?

+0

http://stackoverflow.com/questions/1308624/pass-a-string-by-reference-in-javascript –

+1

@haim evgi: Ich habe diese Frage schon gesehen. Aber diese Frage war sehr verwirrend für mich. Ich habe nicht bekommen, was ShowMe ist, da es eine globale Variable zu sein scheint. Und ich möchte nicht globale Variable verwenden. –

+0

'strMain' ist eine lokale Variable (im Kontext der ersten Funktion). –

Antwort

4

Sie können keinen Wert als Referenz in JS übergeben. Sie könnten ein Objekt mit einer Funktion erstellen, dies für Sie tun:

function TryAppend(originalValue) { 

    // Holds the value to return 
    this.Value = originalValue; 

    // The function joins the two strings 
    this.Append = function (append) { 
     this.Value+=append; 
     return true; 
    } 

} 

Sie können diese dann in einem beliebigen Verfahren wie folgt verwenden:

function AnyProcedure() { 

    var str = "Checking"; 
    var append = new TryAppend(str); 
    if (append.Append("TextBox")) { 
     alert(append.Value); // Will give "CheckingTextBox" 
    } 

} 

Jedesmal, wenn Sie hängen Sie anrufen, wird der Wert String angehängt an. I.e.

Wenn Sie dann tat:

append.Append(" Foo"); 

append.Value entspräche CheckingTextBox Foo.

+0

Wie hast du strMain in myObject als myObject.strMain erhalten –

+0

Funktioniert es, wenn beide Funktionen auf verschiedenen js-Dateien sind? –

+0

Ja. Solange beide js-Dateien Referenzen auf der Seite sind, können sie sich gegenseitig sehen. – GenericTypeTea

1

Sie müssen den String anstelle von true zurückgeben !!

function TryAppend(strMain,value) { 

    strMain=strMain+value; 

    return strMain; //you need return the 'String Value' to use in it another method 

    } 


    //pager.aspx 


    function validate() { 

    str="Checking"; 

    str = TryAppend(str,"TextBox"); 

    alert(str); //expected result "Checking" TextBox 

    //result being obtained "Checking"  
    } 
+0

Ich habe einen anderen Zweck, aufgrund dessen ich keine Zeichenfolge zurückgeben kann –

1

Erstellen Sie eine globale Variable (sagen gblstrMain) außerhalb der Funktion TryAppend und setzen Sie seinen Wert innerhalb der Funktion strMain.

var gblstrMain; 

function TryAppend(strMain,value) 
    { 
    strMain=strMain+value; 
    gblstrMain = strMain; 
    return true; 
    } 

    //pager.aspx 

    function validate() 
    { 
    str="Checking"; 
    TryAppend(str,"TextBox"); 
    str = gblstrMain; 
    alert(str); //expected result "Checking" TextBox 
    //result being obtained "Checking"  
    } 

Da Sie in der TryAppend-Funktion besonders über "return true" sind, können wir diese Problemumgehung erreichen.

Verwandte Themen