在函数之间传递全局变量

时间:2014-02-21 00:44:02

标签: javascript

我在函数之间传递全局变量值时遇到一些问题...无论我设置什么,我的cssStr总是包含indo,其值为1使用setindo()函数的值。该函数内的调试警报始终是正确的。

var indo = "1";

function setindo(passedvalue) {
    indo = passedvalue;
    alert("indo = " + indo);
}


$(window).load(function(){
$(document).ready(function(){


var cssStr = ".upload-preview" + indo + " img";
var preview = $(cssStr);

$(".file").change(function (event) {            //file is the class id
    var input = $(event.currentTarget);
    var file = input[0].files[0];
    var reader = new FileReader();
    //var title1 = $('#file').attr('id');
    alert("indo = " + indo);
    alert(cssStr);
    reader.onload = function(e){
        image_base64 = e.target.result;
        preview.attr("src", image_base64);
    };
    reader.readAsDataURL(file);
});

</script>

2 个答案:

答案 0 :(得分:0)

setindo内,使用cssStr的值代替,然后它将真正是全局的。目前passedvalue位于setindo

的本地范围内

答案 1 :(得分:0)

您看到的是cssStr在文档首次加载时定义一次。当indo的值发生变量时,变量的值不会改变 - 在创建字符串后它们根本不相关。如果要在调用该函数时使用indo的值,则在该函数中构造cssStr而不是在文档加载时。{/ p>