2012-08-23 46 views
0

我想从一个jquery代码块到另一个执行某个任务的变量。 我有一个表格,用户填写,他们有两个选项,但一个是默认设置。选项一,选项二通过点击一个按钮来显示,然后替换选项一。如何将变量传递到另一个函数

jQuery的

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

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

但是这出现在当我输入一些数据不确定的情况下,我知道有些人可能会说,它没有拆开的前一功能。所以我的问题是我怎么可以得到newopt提醒到第二个功能,当我点击ipload

回答

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/

+0

谢谢,我会读这个 – user618879

+0

绿色勾号?! ;) – DaveR

1

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

var newopt=""; 

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

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

这会一直出现空白 – user618879

+0

正如其他帖子中提到的那样,newopt = $(“name”).val();'line。你可能的意思是'newopt = $(“#name”).val();' –

0

可以使变量全球也是$("name").val();假设是$("#name").val();,如果是的话,为什么要补充具有相同ID的另一个元素,ID应该是唯一的。

相关问题