如何从函数内设置全局变量?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (30)

如何从函数内设置全局变量?

$(document).ready(function() {
    var option = '';

    $("[name=select_option_selected]").change(function() { 
        var option = $(this).val();
        alert(option); // Example: Foo  
    });

    alert(option); // Need it to alert Foo from the above change function    
});
提问于
用户回答回答于

在你的jQuery的准备范围之外声明它

var option = '';

$(document).ready(function() {
    $("[name=select_option_selected]").change(function() { 
        option = $(this).val();
        alert(option); // Example: Foo  
    });

    alert(option); //This will never be "Foo" since option isn't set until that select list changes
});

如果你想把它初始化为当前选定的值,试试这个:

var option = "";
var $select_option_selected = null;

$(function() {        
    $select_option_selected = $("[name='select_option_selected']")
    $select_option_selected.change(function() { 
        option = $(this).val();
    });    
    option = $select_option_selected.val();
});
用户回答回答于

创建全局变量不是一个好主意。正如他们指出的那样,您可以通过以下方式创建全局变量:

  • 在所有函数之外声明变量
  • 在没有var关键字的情况下初始化变量
  • 或者,将其声明为窗口对象的属性: window.options = 'blah';

使用jQuery的Data()方法

但是使用jQuery(和其他库)创建全局可访问的值有更好的方法。在jQuery中,使用该data()方法存储与DOM元素关联的值:

// store 'blah' at document root
$(document).data('mysite.option', 'blah');

// retrieve value
alert($(document).data('mysite.option'));

注意"mysite"......为了使用javascript命名空间全局变量,同样的原因,命名空间数据键是个好主意。

所属标签

可能回答问题的人

  • 人生的旅途

    10 粉丝484 提问6 回答
  • 不吃貓的鱼oo

    5 粉丝466 提问6 回答
  • 富有想象力的人

    4 粉丝0 提问5 回答
  • Richel

    8 粉丝0 提问5 回答

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励