我试图将一个jquery代码块中的变量转换为另一个代码来执行某个任务。 我有一个用户填写的表单,他们有两个选项,但默认设置一个。选项一,通过单击按钮显示选项二,然后替换选项一。
jquery
$("#opt2").click(function(){
var newopt = $("name").val();
$("#opt1").replaceWith('<input type="text" id="name">');
});
$("#ipload").click(function(){
alert(newopt);
});
但是当我输入一些数据时会出现未定义的事件,我知道有些人可能会说它不是以前的功能。所以我的问题是当我点击ipload
时,如何让newopt警告第二个功能答案 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应该是唯一的。