2013-04-17 15 views
7

Ich habe eine Prozedur erstellt, um Inhalt in eine Textdatei auf meinem lokalen Rechner zu schreiben.Schreiben von Daten in eine lokale Textdatei mit 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> 

Das funktioniert gut, und ich kann meine neuen Daten an die Datei anhängen.

Aber ich möchte eine bestimmte Zeile CONTENT basierend auf der ID, die ich übergeben, aktualisieren.
Ich suchte viel, konnte aber keine finden.

Wie kann eine bestimmte Zeile in der Datei basierend auf der ID aktualisiert werden?

Hinweis: - Ich verwende keinen Server als solchen. Ich habe eine HTML-Datei (enthält alle Funktionen), die ich auf meinem lokalen Rechner selbst ausführen werde.

+1

können Sie die html teilen –

+0

Fügen Sie den HTML-Code in Frage. Nicht im Kommentar. – arulmr

+0

Warum arbeiten Sie nicht einfach mit JSON an diesem txt? Dann können Sie JSON.parse() parsen, um den Inhalt zu analysieren und einen JS zu erstellen, der die ID/Zeile/was auch immer vor der Aktualisierung prüft, und JSON.stringify(), um auf die txt-Rückseite zu schreiben. – RaphaelDDL

Antwort

10

Unsere 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 (zum txt-Datei zu schreiben):

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); 
} 

eine bestimmte Zeile Überprüfung:

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!"); } 
    } 
} 

diese innerhalb einer .hta Datei und starten Sie Put es. Getestet auf W7, IE11. Es funktioniert. Wenn du mir erklären willst, was vor sich geht, sag es auch.

+4

Funktioniert nur in IE –

+1

@Everyone_Else Dies ist keine Überraschung. Das OP verwendet ActiveX, das in IE funktioniert. Außerdem erlauben andere Browser keinen Zugriff auf lokale Dateien. – akinuri

+1

Es ist eine schlechte Antwort. Gute Antworten sind nützlich für andere, die die gleiche Frage stellen und IE nicht verwenden. – CashCow

Verwandte Themen