如何将变量传递给另一个函数

时间:2012-08-23 23:37:53

标签: jquery

我试图将一个jquery代码块中的变量转换为另一个代码来执行某个任务。 我有一个用户填写的表单,他们有两个选项,但默认设置一个。选项一,通过单击按钮显示选项二,然后替换选项一。

jquery

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

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

但是当我输入一些数据时会出现未定义的事件,我知道有些人可能会说它不是以前的功能。所以我的问题是当我点击ipload

时,如何让newopt警告第二个功能

3 个答案:

答案 0 :(得分:2)

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

因此,要在其他地方使用newopt,请在​​任何函数之外声明它:

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

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

但是这段代码仍然不起作用 - 你错过了选择器的#out,表示你想要id为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/

答案 1 :(得分:1)

你已经使newopt成为第一个函数的局部变量。因此,第二个不会看到它。试试这个:

var newopt="";

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

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

答案 2 :(得分:0)

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