2013-04-17 16 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に基づいて特定の行CONTENTを更新したいと思います。
私は多くを検索しましたが、何も見つかりませんでした。

IDに基づいてファイル内の特定の行を更新するにはどうすればよいですか?

注: - 私はそのようなサーバーを使用していません。私は自分のローカルマシン上で実行されるhtmlファイル(すべての機能を含む)を持っています。

+1

あなたはhtmlを共有できます –

+0

問題のHTMLコードを追加してください。コメントにはありません。 – arulmr

+0

あなたは単にそのtxt上でJSONを使って作業しませんか?次にJSON.parse()を実行して内容を解析し、ID /行/更新前のJSと、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ファイルへの書き込み):.htaファイルと実行の内部でこれらを入れ

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

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

は、特定の行をチェックしますそれ。 W7、IE11でテスト済み。それは働いている。また、何が起こっているのかを説明したいと思ったら、そう言いなさい。

+4

IEでのみ動作します –

+1

@Everyone_Elseこれは驚きではありません。 OPはIEで動作するActiveXを使用しています。また、他のブラウザはローカルファイルへのアクセスを許可しませんでした。 – akinuri

+1

これは悪い答えです。良い答えは、同じ質問をし、IEを使わない他の人には役に立ちます。 – CashCow