从另一个函数获取var?

时间:2015-10-29 23:49:21

标签: javascript jquery

您好我试图从另一个函数

获取变量

代码:

$(document).ready(function() {
        var totalFiles;

$(".filesUpload").on("change", function() { 
                    var files = $(".filesUpload").prop("files");
                    var names = $.map(files, function(val) { return val.name; });
                    $("#uploadBar").modal('show');
                    var totalFiles = names.length;
                });
                $("#uploadBar").on("shown.bs.modal", function() { var test = totalFiles; alert(test); });

但是现在我只在totalFiles上得到了未定义,但如果我在var totalFiles = names.length之后有一个警报我得到了正确的结果,任何人都知道我能做什么以及我做错了什么?

PS。我已经检查了其他线程,但它仍然无法正常工作。

3 个答案:

答案 0 :(得分:2)

检查您对totalFiles的引用。您有一个全局声明,然后在$(".filesUpload").on("change", function() {中声明它。

这就是它所需要的:

$(document).ready(function() {
        var totalFiles;

$(".filesUpload").on("change", function() { 
                    var files = $(".filesUpload").prop("files");
                    var names = $.map(files, function(val) { return val.name; });
                    $("#uploadBar").modal('show');
                     totalFiles = names.length;
                });
                $("#uploadBar").on("shown.bs.modal", function() { var test = totalFiles; alert(test); });

只需从第一个功能中删除'var'

答案 1 :(得分:2)

不要将变量声明两次。在onChange功能中,只需使用totalFiles,而不是使用var关键字再次声明。

$(".filesUpload").on("change", function() {
    ...
    totalFiles = names.length;
    ...
});

答案 2 :(得分:1)

您在回调中声明了一个局部变量。 totalFiles = names.length;是更新全局变量的正确方法。

var totalFiles;
$(".filesUpload").on("change", function() { 
    var files = $(".filesUpload").prop("files");
    var names = $.map(files, function(val) { return val.name; });
    $("#uploadBar").modal('show');
    totalFiles = names.length;
});