javascript - 如何使用 javascript 编辑文本文件的特定行
问题描述
我不知道如何做到这一点,我正在尝试编辑以 html 导入的文本文件的第二行。到目前为止,这是我的代码:
let AddedItems = '';
function GenerateCode() {
const Out = document.getElementById("Output").value
const Quantity = document.getElementById("OutQuantity").value
const Time = document.getElementById("Time").value
if(Quantity < 1) return alert('You need to set a quantity greater than 0');
if(Time < 0) return alert('You need to set a time of aleast 0');
if(Out === '') return alert('You need to set a output item');
document.getElementById("CodeOut").innerHTML = ',{"itemId": "' + Out + '", "quantity": ' + Quantity + ', "craftTime": ' + Time + ', "ingredientList": [' + AddedItems + ']}';
}
function ResetItems() {
AddedItems = '';
GenerateCode();
}
function AddItem() {
const ItemQ = document.getElementById("IimeQ").value;
const Input = document.getElementById("Input").value;
if(ItemQ < 1) return alert('You need to set a quantity greater than 0');
if(Input === '') return alert('You need to set a input');
if(AddedItems === '') {
AddedItems = '{ "quantity": ' + ItemQ + ', "itemId": "' + Input + '"}';
} else {
AddedItems = AddedItems.concat(', { "quantity": ' + ItemQ + ', "itemId": "' + Input + '"}');
}
GenerateCode();
}
它只是在单击按钮时调用函数,但我需要另一个函数来获取文本文件并将倒数第二行更改为“document.getElementById("CodeOut").innerHTML"
解决方案
使用FileReader API并从文件输入中传递数据。然后,您可以按换行符拆分并将其作为数组读取(如果文件不是很大,否则您应该使用某种缓冲区)
document.getElementById('inputfile').addEventListener('change', function() {
const fr=new FileReader();
fr.onload=function(){
document.getElementById('output')
.textContent=fr.result;
}
let text = fr.readAsText(this.files[0]);
/*Split by a regex that looks at windows (\n)
and unix (\r) line breaks, then get the second line.*/
text.split(/[\r\n]+/g)[1];
})
推荐阅读
- javascript - 自定义画廊 Gutenberg 块中的空图像数组
- kubernetes - 为什么创建 kubernetes 集群后 /var/lib/cni/networks 为空?
- spring - 防止数据在重试失败调用时持续存在 - Spring Retry
- android - Xamarin 形成日期选择器绑定日期并在日期更改时执行某些操作
- javascript - 如何使用javascript根据另一个div元素的位置放置弹出窗口并做出反应?
- jsf - Primefaces Datatable过滤问题,用于下拉作为数据输入
- angular - 角度错误 TS2339 属性在类型上不存在
- sql - 在其他条件下查找 MIN 值 Teradata
- python - 获取 matplotlib 分散的 3D 点以按 3 个数组的乘积显示颜色
- c# - 堆叠 WPF 窗口