jquery变量范围问题
我有以下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
$(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());
});