0

我正在尝试将变量从一个 jquery 代码块中获取到另一个代码块中以执行特定任务。我有一个用户填写的表格,他们有两个选项,但默认设置一个。选项一,选项二通过单击一个按钮来显示,然后替换选项一。

jQuery

$("#opt2").click(function(){
var newopt = $("name").val();
$("#opt1").replaceWith('<input type="text" id="name">');
});

$("#ipload").click(function(){
alert(newopt);
});

但是当我输入一些数据时会出现未定义的事件,我知道有些人可能会说它不属于前一个函数。所以我的问题是,当我单击 ipload 时,如何让 newopt 提醒第二个功能

4

3 回答 3

2

因为您在函数中声明了变量 newopt,所以它只能在该函数中访问。

因此,要使 newopt 在其他地方可用,请在任何函数之外声明它,如下所示:

var newopt;
$("#opt2").click(function(){
newopt = $("name").val();
$("#opt1").replaceWith('<input type="text" id="name">');
});

$("#ipload").click(function(){
alert(newopt);
});

但是这段代码仍然不起作用 - 你错过了选择器中的 # 来表明你想要带有 id 名称的 div 的值 - 这将起作用:

var newopt;
$("#opt2").click(function(){
newopt = $("#name").val();
$("#opt1").replaceWith('<input type="text" id="name">');
});

$("#ipload").click(function(){
alert(newopt);
});

您可以在此处了解有关 javascript 范围的更多信息 - http://coding.smashingmagazine.com/2009/08/01/what-you-need-to-know-about-javascript-scope/

于 2012-08-23T23:40:02.907 回答
1

您已将 newopt 设为第一个函数的局部变量。因此它不会被第二个看到。尝试这个:

var newopt="";

$("#opt2").click(function()
{
    newopt = $("name").val();
    $("#opt1").replaceWith('<input type="text" id="name">');
});

$("#ipload").click(function()
{
    alert(newopt);
});
于 2012-08-23T23:40:19.440 回答
0

您也可以将变量$("name").val();设为全局变量$("#name").val();,如果是这样,那么为什么要添加另一个具有相同 id 的元素,id 应该是唯一的。

于 2012-08-23T23:43:50.087 回答