Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
jquery变量范围问题_Jquery - Fatal编程技术网

jquery变量范围问题

jquery变量范围问题,jquery,Jquery,我有以下jquery代码: $(document).ready(function(){ var request_text; request_text = "Hello my name is " + $('#name').val() + ", and I would like to join the birthday surprise for <%= get_current_board.bp_name.capitalize %>.\n\n" + "Could y

我有以下jquery代码:

$(document).ready(function(){
    var request_text;
    request_text = "Hello my name is " + $('#name').val() + ", and I would like to join the birthday surprise for <%= get_current_board.bp_name.capitalize %>.\n\n" +
    "Could you please send me an invitation so that I can participate.\n\nThank you very much. \n\n" + $('#name').val();

    $('textarea').text(request_text);

    $('#name').keyup(function() {
        $('textarea').text(request_text);
        });
    });
$(文档).ready(函数(){
var请求文本;
request_text=“您好,我的名字是“+$('#name').val()+”,我想参加的生日惊喜活动。\n\n+
“您能给我发个邀请让我参加吗。\n\n非常感谢您。\n\n”+$('#name').val();
$('textarea').text(请求文本);
$('#name').keyup(函数(){
$('textarea').text(请求文本);
});
});
它适用于document.ready部分,但不适用于keyup。我认为这是一个范围问题,但我似乎无法让它工作

如果我执行以下操作,它将起作用:

 $('#name').keyup(function() {
        request_text = "Hello my name is " + $('#name').val() + ", and I would like to join the birthday surprise for <%= get_current_board.bp_name.capitalize %>.\n\n" +
        "Could you please send me an invitation so that I can participate.\n\nThank you very much. \n\n" + $('#name').val();
        $('textarea').text(request_text);
        });
$('#name').keyup(函数(){
request_text=“您好,我的名字是“+$('#name').val()+”,我想参加的生日惊喜活动。\n\n+
“您能给我发个邀请让我参加吗。\n\n非常感谢您。\n\n”+$('#name').val();
$('textarea').text(请求文本);
});
但我不想重复代码


有什么想法吗?

我想说:

  var request_text;
行前:

  $(document).ready(function(){
这将解决在全局范围内定义变量的问题:)

当然,您必须在
keyup
处理程序中包含
request\u text
字符串的生成——否则,您希望text区域的内容如何更改

至于不重复代码:您实际上不需要
keyup
处理程序之外的所有代码。您可以这样做:

$(document).ready(function(){
    $('#name').keyup(function() {
        var request_text = "Hello my name is " + $('#name').val() + ", and I would like to join the birthday surprise for <%= get_current_board.bp_name.capitalize %>.\n\n" +
        "Could you please send me an invitation so that I can participate.\n\nThank you very much. \n\n" + $('#name').val();

        $('textarea').text(request_text);
    }).keyup();
});
试试这个

$(document).ready(function(){

        $('textarea').text(test());

    $('#name').keyup(function() {
        $('textarea').text(test());
        });
    });



function test(){


    var request_text;
    request_text = "Hello my name is " + $('#name').val() + ", and I would like to join the birthday surprise for <%= get_current_board.bp_name.capitalize %>.\n\n" +
    "Could you please send me an invitation so that I can participate.\n\nThank you very much. \n\n" + $('#name').val();


return request_text;


}
$(文档).ready(函数(){
$('textarea').text(test());
$('#name').keyup(函数(){
$('textarea').text(test());
});
});
功能测试(){
var请求文本;
request_text=“您好,我的名字是“+$('#name').val()+”,我想参加的生日惊喜活动。\n\n+
“您能给我发个邀请让我参加吗。\n\n非常感谢您。\n\n”+$('#name').val();
返回请求文本;
}

这不是范围问题。$(document).ready中的代码在页面加载时运行一次。它不是一个函数。

如果“不工作”表示$(“#name').val()部分没有更改,则可以将请求文本生成行包装到lambda中

var request_text = function() { return "Hello my name is " + $('#name').val() + ", and I would like to join the birthday surprise for <%= get_current_board.bp_name.capitalize %>.\n\n" +
"Could you please send me an invitation so that I can participate.\n\nThank you very much. \n\n" + $('#name').val(); }

$('textarea').text(request_text());

$('#name').keyup(function() {
    $('textarea').text(request_text());
});
var request_text=function(){return“你好,我的名字是”+$('#name').val()+”,我想参加生日惊喜活动。\n\n+
“您能给我发个邀请让我参加吗。\n\n非常感谢您。\n\n”+$('#name').val()}
$('textarea').text(request_text());
$('#name').keyup(函数(){
$('textarea').text(request_text());
});

有多种方法可以使变量成为全局变量:

  • 在声明之前不要使用
    var
    关键字。这在任何地方都有效
  • 在任何函数之外声明变量
  • 使用
    window.VARNAME
    声明变量。默认情况下,所有全局变量都是
    窗口
    对象的一部分。这将使其成为全局变量
  • 因此,在您的示例中,您可以执行以下操作之一

  • 照艾哈迈德·哈贾尔的建议去做
  • 从声明中删除
    var
  • 使用
    window.request\u text
    作为变量名

  • 您需要更新keyup函数中request_text变量的值。”这是一个演示。

    什么是“不起作用”呢?我在“名称”字段中输入文本,而名称在文本区域中不会得到更新。非常感谢所有答案,它们确实对NOOB有很大帮助。这与此无关。
    var request_text = function() { return "Hello my name is " + $('#name').val() + ", and I would like to join the birthday surprise for <%= get_current_board.bp_name.capitalize %>.\n\n" +
    "Could you please send me an invitation so that I can participate.\n\nThank you very much. \n\n" + $('#name').val(); }
    
    $('textarea').text(request_text());
    
    $('#name').keyup(function() {
        $('textarea').text(request_text());
    });