全局变量内部变更功能

时间:2016-04-12 14:46:26

标签: javascript jquery

我想在其外部使用更改功能的变量值。我在更改函数之外声明了变量,但是当我在其他函数中使用它时,它仍然输出未定义的值。



$(document).ready(function() {
    var test = "";
    $("input:checkbox").change(function() {
        var ischecked = $(this).is(':checked');
        if (ischecked) {
            test = $(this).attr('class');
        }
        $('.first').text(test);
    });
    $('.second').text(test);
})

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<input type="checkbox" class="all" value="Car">All
<input type="checkbox" class="got" value="Car">Game of Thrones
<input type="checkbox" class="bb" value="Car">Breaking Bad
<input type="checkbox" class="arrow" value="Car">Arrow

<div class="first"></div>
<div class="second"></div>
&#13;
&#13;
&#13;

#second div中,变量值未定义。

1 个答案:

答案 0 :(得分:1)

仅在输入更改时,

class值才会分配给test变量。但您要在second&amp;上设置document ready的文字。那时它是空字符串。

有很多方法可以解决此问题。您可以将$('.second').text(test);$('.first').text(test);一起放在更改函数中,或者只创建一个函数,在输入和更改时调用它。传递class值作为参数。

以下是带有function

的演示
$(document).ready(function() {
        var test = "";
        $("input:checkbox").change(function() {
            var ischecked = $(this).is(':checked');
            if (ischecked) {
                test = $(this).attr('class');
            }
            $('.first').text(test);
    _setSecondDiv(test)
        });
        function _setSecondDiv(selClass){
        $('.second').text(test);
     }
    })

Working Example

使用多个jQuery选择器

$(document).ready(function() {
    var test = "";
    $("input:checkbox").change(function() {
        var ischecked = $(this).is(':checked');
        if (ischecked) {
            test = $(this).attr('class');
        }
        $('.first, .second').text(test); // Changed here

    });
})

Working Example with multiple selector