如何将变量从一个函数传递到另一个函数

时间:2013-12-02 22:49:20

标签: javascript jquery

我想用一个函数设置变量的值,并将其传递给另一个函数,以便我可以使用它来确定结果。考虑尝试在下面定义变量'highlight':

定义功能:

<script>
$(document).on('click', '.more', function(t) {
var highlight = 1;
});

$(document).on('click', '.less', function() {
var highlight = 0;
});
</script>

现在我应该将高亮设置设置为1或0.我想在另一个脚本中使用它:

<script>
$(document).ready(function(){

    var usericon_info = function(highlight){

    var html = '';
    if(highlight == 0)
        //code... ;

    if(highlight == 1)
        //code... ;

    return html;
    }

});
</script>

但是,这些值似乎没有通过,我哪里错了?控制台中没有错误。

4 个答案:

答案 0 :(得分:0)

通过设置函数内的值,可以将它们仅限于该函数。你在这里做的是在你点击类.more时定义一个变量,它只能在那个click事件中访问,或者除非作为参数传递。

试试这个

var highlight;
$(document).on('click', '.more', function(t) {
    highlight = 1;
});

$(document).on('click', '.less', function() {
    highlight = 0;
});

请记住取出var,否则只需重置变量值。

答案 1 :(得分:0)

有几个问题 - 主要涉及在不同范围内多次定义highlight。这些范围是:

  • .more点击处理程序;
  • .less时钟处理程序;和
  • 分配给传递给usericon_info的匿名函数范围内的$(document).ready()变量的匿名函数。

var关键字用于定义包含函数范围内的变量(或者如果没有包含函数,那么全局范围),因此您需要使用highlight变量定义一次var在所有使用它的地方共有的范围内 - 如果你这样做,那么所有这些函数都会引用同一个变量。

这样的事情:

$(document).ready(function(){
    var highlight = 0;

    $( '.more' ).on('click', function(){ highlight = 1; });
    $( '.less' ).on('click', function(){ highlight = 0; });

    var usericon_info = function(){
        var html = '';
        if(highlight == 0)
        {
            //code... ;
        }
        else if(highlight == 1)
        {
            //code... ;
        }
        return html;
    }
});

答案 2 :(得分:0)

你必须定义像globals这样的变量。

你可以用两种不同的方式做到这一点

1 - 您必须将变量声明为

之类的任何函数
    var highlight;
$(document).on('click', '.more', function(t) {
    highlight = 1;
});

$(document).on('click', '.less', function() {
    highlight = 0;
});

2-你用'var'声明变量,这样javascript理解是全局的。

$(document).on('click', '.more', function(t) {
    highlight = 1;
});

$(document).on('click', '.less', function() {
    highlight = 0;
});

答案 3 :(得分:-1)

变化:

$(document).on('click', '.more', function(t) {
var highlight = 1;
});

$(document).on('click', '.less', function() {
var highlight = 0;
});

为:

$(document).ready(function() {
    $('.more').click(function(t) {
        var highlight = 1;
    });
    $('.less').click(function() {
        var highlight = 0;
    });
});

这是更好的结构,以确保DOM已准备好进行操作和制作 确保你的功能适用于正确的事件。

编辑:

我还将研究jquery .toggle()函数。它可能对你有用。 http://api.jquery.com/toggle/