2013-04-17 30 views
7

Tôi đã tạo một quy trình để viết nội dung vào một tệp văn bản trong máy cục bộ của mình.Ghi dữ liệu vào một tệp văn bản cục bộ với 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> 

Điều này hoạt động tốt và có thể thêm dữ liệu mới của tôi vào tệp.

Nhưng tôi muốn cập nhật một hàng cụ thể CONTENT dựa trên ID mà tôi đang chuyển.
Tôi đã tìm kiếm rất nhiều, nhưng không thể tìm thấy.

Làm cách nào để cập nhật một hàng cụ thể trong tệp dựa trên ID?

Lưu ý: - Tôi không sử dụng bất kỳ máy chủ nào như vậy. Tôi có một tập tin html (chứa tất cả các chức năng) mà tôi sẽ được chạy trên máy địa phương của chính nó.

+1

bạn có thể chia sẻ html –

+0

Thêm mã HTML được đề cập. Không có bình luận. – arulmr

+0

Tại sao bạn không chỉ làm việc với JSON trên txt đó? Sau đó, bạn có thể JSON.parse() để phân tích cú pháp nội dung và tạo một JS để kiểm tra ID/hàng/bất cứ điều gì trước khi cập nhật và JSON.stringify() để ghi vào txt. – RaphaelDDL

Trả lời

10

HTML của chúng tôi:

<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 (bằng văn bản cho tập tin 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); 
} 

kiểm tra một hàng cụ thể:

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

Đặt các bên trong một tập tin .hta và chạy nó. Thử nghiệm trên W7, IE11. Nó hoạt động. Ngoài ra nếu bạn muốn tôi giải thích những gì đang xảy ra, hãy nói như vậy.

+4

Chỉ hoạt động trong IE –

+1

@Everyone_Else Điều này không có gì ngạc nhiên. OP đang sử dụng ActiveX hoạt động trong IE. Bên cạnh đó, các trình duyệt khác sẽ không cho phép truy cập các tệp cục bộ. – akinuri

+1

Đó là một câu trả lời tồi. Câu trả lời hay là hữu ích cho những người khác hỏi cùng một câu hỏi và không sử dụng IE. – CashCow

Các vấn đề liên quan