Как передать строковое значение в качестве ссылки в JavaScript и изменить его там - PullRequest
5 голосов
/ 14 июля 2010

Как я могу передать строковое значение по ссылке в JavaScript.

Я хочу такую ​​функциональность.

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

Как это сделать.

Ответы [ 3 ]

4 голосов
/ 14 июля 2010

Вы не можете передать значение по ссылке в JS. Вы можете создать объект с функцией, которая сделает это за вас:

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

}

Затем вы можете использовать это любым способом следующим образом:

function AnyProcedure() {

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

}

Каждый раз, когда вы вызываете append, строка Value будет добавляться. * 1007 Т.е. *

Если вы тогда сделали:

append.Append(" Foo");

append.Value будет равно CheckingTextBox Foo .

1 голос
/ 14 июля 2010

Создайте глобальную переменную (скажем, gblstrMain) вне функции TryAppend, а затем установите для нее значение 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"    
    }

Поскольку вы особенно заинтересованы в «возврате true» в функции TryAppend, мыможет быть достигнуто с помощью этого обходного пути.

1 голос
/ 14 июля 2010

Вам нужно вернуть String вместо 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"     
    } 
...