2010-07-14 11 views
5

Come posso passare un valore stringa per riferimento in javascript.Come passare un valore di stringa come riferimento in javascript e cambiarlo lì

Desidero questo tipo di funzionalità.

//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"  
    } 

Come fare questo. ?

+0

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

+1

@haim evgi: Ho già visto quella domanda. Ma quella domanda mi confondeva molto. Non ho ottenuto What ShowMe è come sembra essere una variabile globale. E non voglio usare la variabile globale. –

+0

'strMain' è una variabile locale (nel contesto della prima funzione). –

risposta

4

Non è possibile passare un valore per riferimento in JS. È possibile creare un oggetto con una funzione per fare questo per voi:

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; 
    } 

} 

È quindi possibile utilizzare questo in qualsiasi metodo come segue:

function AnyProcedure() { 

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

} 

Ogni volta che si chiama aggiungere, la stringa di valore sarà aggiunto a. Cioè

Se poi fatto:

append.Append(" Foo"); 

append.Value sarebbe uguale CheckingTextBox Foo.

+0

Come hai ottenuto strMain in myObject come myObject.strMain –

+0

Funzionerà se entrambe le funzioni sono su diversi file js? –

+0

Sì. Finché entrambi i file js sono riferimenti nella pagina, saranno in grado di vedersi. – GenericTypeTea

1

È necessario restituire la stringa anziché true !!

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

Ho qualche altro scopo a causa del quale non posso restituire una stringa –

1

creare una variabile globale (dire gblstrMain) fuori della funzione TryAppend e quindi impostare il valore su strMain all'interno della funzione.

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"  
    } 

Dal momento che siete particolare circa "return true" nella funzione TryAppend, siamo in grado di ottenere con questa soluzione.

Problemi correlati