Как я могу передать строковое значение ссылкой в 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"
}
Как сделать это.?
В 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 будет добавляться. Т.е.
Если бы вы сделали:
append.Append(" Foo");
append.Value
будет равно CheckingTextBox Foo.
Вам нужно вернуть 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"
}
Создайте глобальную переменную (скажем, 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"
}
Поскольку вы уделяете особое внимание «return true» в функции TryAppend, мы можем решить эту проблему с помощью этого обходного пути.