“serialnumberinput”元素是一个文本框,用户可以在其中输入其产品的序列号,如果该函数可以在 .csv 文件中找到该序列号,它将返回在屏幕上将其输出为 HTML 的行。
function ReadSerials() {
const fs = require("fs");
const { parse } = require("csv-parse");
var serialnumber = document.getElementById("serialnumberinput").value;
fs.createReadStream("./SER5YEAR.csv")
.pipe(parse({
delimiter: ",",
from_line: 1
}))
.on("data", function(row) {
var inputbg = document.getElementById("serialnumberinput");
if (row.includes(serialnumber)) {
console.log(row);
var logger = document.getElementById('serialselect');
console.log = function() {
logger.innerHTML += '<td class="serialresult">' + row[1] + '</td>';
logger.innerHTML += '<td class="serialresult">' + row[2] + '</td>';
logger.innerHTML += '<td class="serialresult">' + row[3] + '</td>';
logger.innerHTML += '<td class="serialresult">' + row[4] + '</td>';
logger.innerHTML += '<td class="serialresult">' + row[5] + '</td>';
logger.innerHTML += '<td class="serialresult">' + row[6] + '</td>';
document.getElementById("serialsubmit").style.visibility = "hidden";
inputbg.style.backgroundColor = "#63c63c33";
return;
}
} else {
}
})
}
我尝试简化函数,以便 if 语句仅执行样式更改,因为我认为 HTML 更改可能在创建读取流后很快触发,但它没有任何区别。我还尝试在读取流创建和函数的其余部分之间添加超时。如果我将整个函数简化为基本的 if/else (不涉及文件、html 元素或数据输入),它确实会第一次触发,所以我知道这是我函数中某个地方的问题,我似乎无法弄清楚哪一部分.
这是我在 Electron/Node 中的第一个项目,总的来说,我对 JS 相当陌生,所以如果我遗漏了一些非常明显的东西,我很抱歉,但是我花了相当多的时间阅读有类似问题的帖子,但我找不到描述这个特定问题。
console.table() 功能,然后将样式更改直接添加到 if 子句中。