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)) {
我遇到了一个奇怪的问题,其中 '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)) {