首页 > 解决方案 > 如何使用 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"

标签: javascript

解决方案


使用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];
    }) 

推荐阅读