我试图在我的NodeJS项目中使用"if includes"声明来过滤从. text文件中提取的结果.其 idea 是,用户输入的序列号与前5个数字中的特定模型相关,因此我想过滤放入我的HTML Select 中的数据,但似乎只有在整个字符串相同的情况下才有效.也许我错了(我对JS很陌生,所以我很可能是),但据我的理解,.includes应该是"if X包含Y",而不是"if X = Y".我曾在我的项目中的其他地方使用过它来进行文本输入,但它的行为方式并非如此.
<div class="col-md-12 text-center serialtab">
<h1>Serial Number:</h1>
<input type="text" minlength="10" required id="serialnumberinput" name="serialnumberinput" class="serialtextbox" placeholder="Type Serial Number Here: 19180-12345">
<button type="submit" class="buttonalt serialsubmit" id="serialsubmit" onclick="ReadSerials(), PopulateModelList();">SUBMIT</button>
</div>
....
<select class="fixselect" name="model" id="model" onchange="ReadModels()">
<option value="" selected="selected" >Select Model</option>
<!-- Models are added from the modelist.js script from the model.txt file -->
</select>
function PopulateModelList() {
const fs = require("fs");
const { parse } = require("csv-parse");
var modellist = document.getElementById('model');
var serial = document.getElementById("serialnumberinput").value; //I have tried without .value also
var serialmodel = serial.substring(0,5); //Adding .value to this results in 'undefined'
var testing = document.getElementById("modeltesting");
testing.innerHTML += serialmodel; //Outputs '19180'
fs.createReadStream("./model.txt") //Tried using it as a .csv also but it did not change anything
.pipe(parse({
delimiter: ",",
from_line: 1,
}))
.on("data", function(row) {
console.log(row);
if (row.includes(serialmodel)) {
modellist.innerHTML += '<option value="' + row + '">' + row + '</option>' ;
}
else {
}
})
}
我的"serialModel"var输出"19180",并且它应该从. text文件中调用的行是"19180 -Testing".如果我更改HTML以允许文本输入并在"serialnumberentry"字段中输入完整行"19180 - Testing",那么该函数将按预期工作,因此似乎需要整个字符串匹配.我try 使用indexOf,但这只是输出整个文件.我也try 了从其他论坛帖子中找到的许多其他解决方案,但我在中断后重新 Select 了这个项目,所以不记得这些具体是什么,抱歉.