-2

这是简单的代码 -

$(document).ready(function() {       
        var genvalue="";    
    $("input:radio[name=gender]").click(function() {
    genvalue = $(this).val();
    alert (genvalue);
    }); 
alert (genvalue);   
     //genvalue = $('#gender').val();
//alert (genvalue);

value = $("#edu_det1").val();

more code.................goes ......

alert (genvalue)即使不是通过单击事件调用的值,我也希望发出警报,但是当单击单选按钮时,第一个警报警报的值,而第二个功能没有警报正确的值。我给出空值。

4

5 回答 5

1

Javascript 具有函数作用域——变量的生命周期仅限于其封闭函数的执行。

您在 click 函数中创建了一个新变量。相反,您应该为已经存在的变量分配一个值。所以你需要写

var genvalue="";
$("input:radio[name=gender]").click(function() {
    /* omit the "var" to assign a value to the variable genvalue*/
    genvalue = $(this).val();
});
alert(genvalue) // alerts genvalue, in this case probably ""
                // because the alert gets called before the click-handler fired

代替:

var genvalue="";
$("input:radio[name=gender]").click(function() {
    /* This creates a new variable which is only visible in the click-function */
    var genvalue = $(this).val();
});
alert(genvalue) // will always alert "" and never the value assigned to
                // the var inside your click handler function
于 2012-08-20T12:47:23.233 回答
0

如果您希望您的 genvalue 变量在您的文档就绪函数之外可用,请在函数之外定义它。

var genvalue="";
$(document).ready(function() {       
   $("input:radio[name=gender]").click(function() {
   genvalue = $(this).val();
   alert (genvalue);
});
alert (genvalue);   

此外,一旦你定义了你的变量,你就不需要再次使用 var 了。

于 2012-08-20T12:41:12.847 回答
0

当您在函数内部定义它时,genvalue 超出了函数的范围var

var genvalue="";

$(document).ready(function() {       
    genvalue="";
    $("input:radio[name=gender]").click(function() {
        genvalue = $(this).val();
        alert (genvalue);
    }); 

alert (genvalue);   
//genvalue = $('#gender').val();
//alert (genvalue);

value = $("#edu_det1").val();
于 2012-08-20T12:41:12.830 回答
0

第二次调用alert不会给出正确的值,因为它是在文档加载时调用的

这意味着不可能在您的单选按钮click上调用回调,因此该变量将是未定义的。genvalue

您还使用关键字genvalue在函数中声明,这会将其范围限定为该函数体,使其无法从回调函数外部访问。varclick

于 2012-08-20T12:43:39.193 回答
0

当单击单选按钮以及触发文档就绪事件时,会提醒 genvalue。第二个首先被触发,它不会有任何价值,因为您在顶部声明为

var genvalue="";

如果你想以任何一种方式提醒正确的值,试试这个小提琴

$(document).ready(function() {       
    var genvalue=$("input:radio[name=gender]").val();

     $("input:radio[name=gender]").click(function() {
      genvalue = $(this).val();
        alert (genvalue);
       });
     alert (genvalue);
 }); 
于 2012-08-20T12:46:35.053 回答