Javascript document.write 只会在 For 循环中打印

Javascript document.write will only print inside For loop

我遇到了一个奇怪的问题,其中 'document.write' 将打印到 'For' 循环中,但不会在 'For' 循环之后打印。在函数 test() 中,第 1 和第 2 'document.write' 将打印,但第 3 个不会打印。请帮忙。

<script>
const myForm=document.getElementById("myAvgForm");
const csvFile=document.getElementById("csvFile");
myForm.addEventListener("submit", function (e) {
    e.preventDefault();
    const f = csvFile.files[0];
    const reader = new FileReader();

    reader.onload = function (e) {
        test(document.getElementById("symbol").value, e.target.result);
    };

    reader.readAsText(f);
});

function test(symbol, text)
{
    var lines = text.split("\n");
    symbol = symbol.toUpperCase();
    
    document.write("Begining of file<br>");                // 1.  prints
    
    for (var i=0; i<lines.length; i++) {
        var fields = lines[i].split(",");

        if (fields[2].includes(symbol)) {
            document.write(i + ". " + lines[i] + "<br>");  // 2.  prints
        }
    }

    document.write("End of file");                         // 3.  doesn't print
}

</script>

您需要通过在最后一个 write 调用之后放置 document.close() 来告诉浏览器写入已完成。

浏览器可以使用缓冲区来捕获写入,调用 close() 会将缓冲区刷新到页面。

此外,要处理空行,请先在if中进行length检查:

if (fields.length > 2 && fields[2].includes(symbol)) {