2013-04-17 173 views
7

我已經創建了將內容寫入本地計算機中的文本文件的過程。使用javascript將數據寫入本地文本文件

<form id="addnew"> 
    <input type="text" class="id"> 
    <input type="text" class="content"> 
    <input type="submit" value="Add"> 
</form> 
<script> 
    jQuery(function($) { 
     $('#form_addjts').submit(function(){ 
      writeToFile({ 
       id: $(this).find('.id').val(), 
       content: $(this).find('.content').val() 
      }); 
      return false; 
     }); 
     function writeToFile(data){ 
      var fso = new ActiveXObject("Scripting.FileSystemObject"); 
      var fh = fso.OpenTextFile("D:\\data.txt", 8); 
      fh.WriteLine(data.id + ',' + data.content); 
      fh.Close(); 
     } 
    }); 
</script> 

這工作正常,能夠將我的新數據追加到文件。

但我想根據我傳遞的ID更新特定的行內容。
我搜索了很多,但找不到任何。

如何根據ID更新文件中的某一行?

注意: - 我沒有使用任何服務器。我有一個html文件(包含所有功能),我將在本地機器上運行它。

+1

你能分享html –

+0

添加有問題的HTML代碼。不在評論中。 – arulmr

+0

爲什麼不直接在該txt上使用JSON?然後,您可以使用JSON.parse()來解析內容,並創建一個JS來檢查ID/row /更新前的內容,然後使用JSON.stringify()寫回到txt。 – RaphaelDDL

回答

10

我們的HTML:

<div id="addnew"> 
    <input type="text" id="id"> 
    <input type="text" id="content"> 
    <input type="button" value="Add" id="submit"> 
</div> 

<div id="check"> 
    <input type="text" id="input"> 
    <input type="button" value="Search" id="search"> 
</div> 

JS(寫入TXT文件):

function writeToFile(d1, d2){ 
    var fso = new ActiveXObject("Scripting.FileSystemObject"); 
    var fh = fso.OpenTextFile("data.txt", 8, false, 0); 
    fh.WriteLine(d1 + ',' + d2); 
    fh.Close(); 
} 
var submit = document.getElementById("submit"); 
submit.onclick = function() { 
    var id  = document.getElementById("id").value; 
    var content = document.getElementById("content").value; 
    writeToFile(id, content); 
} 

檢查特定行:

function readFile(){ 
    var fso = new ActiveXObject("Scripting.FileSystemObject"); 
    var fh = fso.OpenTextFile("data.txt", 1, false, 0); 
    var lines = ""; 
    while (!fh.AtEndOfStream) { 
     lines += fh.ReadLine() + "\r"; 
    } 
    fh.Close(); 
    return lines; 
} 
var search = document.getElementById("search"); 
search.onclick = function() { 
    var input = document.getElementById("input").value; 
    if (input != "") { 
     var text = readFile(); 
     var lines = text.split("\r"); 
     lines.pop(); 
     var result; 
     for (var i = 0; i < lines.length; i++) { 
      if (lines[i].match(new RegExp(input))) { 
       result = "Found: " + lines[i].split(",")[1]; 
      } 
     } 
     if (result) { alert(result); } 
     else { alert(input + " not found!"); } 
    } 
} 

把這些一個.hta文件並運行裏面它。測試了W7,IE11。它正在工作。同樣,如果你想要我解釋發生了什麼,請這麼說。

+4

只適用於IE –

+1

@Everyone_Else這並不奇怪。 OP使用的是在IE中運行的ActiveX。此外,其他瀏覽器不允許訪問本地文件。 – akinuri

+1

這是一個不好的答案。好的答案對於提出同樣問題的其他人很有用,並且不要使用IE。 – CashCow

相關問題