Javascript jquery从select标记中获取值,并在click函数中使用它
我有一个下拉选择,我需要从中获取值,并将其放入glassCode变量中。我可以获取该值并将其显示在更改事件内的警报框中。但是,当我试图在变更事件之外使用它时,我一无所获Javascript jquery从select标记中获取值,并在click函数中使用它,javascript,jquery,Javascript,Jquery,我有一个下拉选择,我需要从中获取值,并将其放入glassCode变量中。我可以获取该值并将其显示在更改事件内的警报框中。但是,当我试图在变更事件之外使用它时,我一无所获 <form id="form1" name="form1" method="post"> <select id="glassProduct"> <option value="GI032">GI032 CLEAR FLOAT 3.2MM</option>
<form id="form1" name="form1" method="post">
<select id="glassProduct">
<option value="GI032">GI032 CLEAR FLOAT 3.2MM</option>
<option value="GI040">GI040 CLEAR FLOAT</option>
</select>
<input type="button" name="calculate" id="calculate" value="Calculate">
<input type="reset" value="Clear" />
</form>
在回调函数中,声明var glassCode=$this.val,这是一个局部变量。本例中的Local是指回调函数本身。也就是说,变量超出了这个函数的范围 要从另一个函数(如单击处理程序)中访问glassCode,需要在具有全局作用域的某个对象上定义它。最直接的方法是在全局窗口对象上定义它。然而,这通常是不赞成的,因为它很容易用许多单独的变量将顶级对象弄乱。解决方法是使用特定于应用程序的命名空间。考虑这个问题:
$("#glassProduct").change(function(){
glass = window.glass || {};
glass.glassCode=$(this).val();
alert(glassCode);
});//end of on change glassProduct
$("#calculate").click(function(){
console.log("glass code: " +window.glass.glassCode);
});
如果不需要在全局范围内使用glassCode变量,则无需存储该变量,只需使用Jquery selected即可获得select selected值:
var glasscode;
$("#calculate").click(function(){
glasscode=$('#glassProduct option:selected').text()
alert(glasscode);
});
我认为您应该了解Javascript的作用域和作用域链 代码的问题是,更改中的glassCode与单击中的glassCode不在同一范围内,尽管它们具有相同的名称 因此Jquery应该是
var glassCode; // share the same scope in two function
$("#glassProduct").change(function(){
glassCode=$(this).val();
alert(glassCode);
});
$("#calculate").click(function(){
console.log("glass code: " +glassCode);
});
您需要将glassCode保存到JS文件范围内的全局变量或其他变量。这里glassCode变量在更改范围内,因此当您在单击事件中记录它时,您将不会获得新值是的,谢谢,但我需要存储它。我需要在on change事件中获取该代码。所以稍后我可以使用该代码做一些事情,如果您在函数执行期间需要这个值,只需存储在本地、全局或原型变量中。查看我用局部变量解决方案更新的答案。瑞克,那是什么| |那是还是??在玻璃上=窗。玻璃| |{};如果存在,它使用window.glass,否则它将window.glass初始化为对象文字。当我去小提琴时,我打开firebug,控制台中没有显示任何内容,谢谢你的回复
var glasscode;
$("#calculate").click(function(){
glasscode=$('#glassProduct option:selected').text()
alert(glasscode);
});
var glassCode; // share the same scope in two function
$("#glassProduct").change(function(){
glassCode=$(this).val();
alert(glassCode);
});
$("#calculate").click(function(){
console.log("glass code: " +glassCode);
});