【问题标题】:Javascript file reader + problem in variable scopeJavascript文件阅读器+变量范围内的问题
【发布时间】:2020-02-01 12:55:03
【问题描述】:

我想在 javascript 中读取文件并操作一些变量,所以我使用以下代码:

var error = false;

var fileReader = new FileReader();
fileReader.onload = function(fileLoadedEvent){
    var textFromFileLoaded = fileLoadedEvent.target.result;
    if(textFromFileLoaded.length >=1000){
        error = true;
    }



    console.log(textFromFileLoaded);
};

fileReader.readAsText(uploadFile, "UTF-8");
if(error == true)
    $('#export').prop('disabled', true);

在最后的代码中,当我尝试测试错误是否为真时,我发现它为假(这意味着文件读取器内的错误变量的更改不会持续存在。 请问有什么问题需要你的帮助。

【问题讨论】:

    标签: javascript variables scope


    【解决方案1】:

    FileReader.readAsText() 是异步的,因此下一行将在文件读取准备好之前执行。

    您可以在事件处理程序中设置 disabled 属性。

    fileReader.onload = function(fileLoadedEvent){
        var textFromFileLoaded = fileLoadedEvent.target.result;
        if(textFromFileLoaded.length >=1000){
            error = true;
            $('#export').prop('disabled', error);
        }
    };
    
    fileReader.readAsText(uploadFile, "UTF-8");
    

    【讨论】:

    • 我添加了它,但结果相同,按钮的 disabled 属性没有改变
    • 它对我有用。但它并没有为你想要的元素设置属性。你可以使用 attr 而不是 prop。
    • 即使我使用纯javascript document.getElementById('exportResultBtn2').disabled = true;它不起作用
    猜你喜欢
    • 2011-04-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-08
    • 1970-01-01
    • 2017-07-18
    • 1970-01-01
    • 2011-09-16
    相关资源
    最近更新 更多