2017-11-05 12 views
1

간단한 동적 테이블을 HTML로 만들고 사용자의 입력 값을 텍스트의 새 줄에있는 텍스트 필드에 저장하는 메서드를 작성해야합니다. 들. 아이디어가 있습니까? 내 HTML 코드가db 또는 serve 할 필요없이 HTML 테이블의 입력 필드 값을 .txt로 저장

<INPUT type="button" value="Add Row" onclick="addRow('dataTable')" /> 

    <INPUT type="button" value="Delete Selected Row" onclick="deleteRow('dataTable')" /> 

    <INPUT type="button" value="Save Selected Row" onclick="saveRow('dataTable')" /> 

    <INPUT type="button" value="Edit Selected Row" onclick="EditeRow('dataTable')" /> 

    <TABLE id="dataTable" width="350px" border="1"> 
     <TR> 
      <TD><INPUT type="checkbox" name="chk"/></TD> 
      <TD><INPUT type="text" name="dns[]"/></TD> 
      <TD><INPUT type="text" name="domain[]"/></TD> 
      <TD><INPUT type="text" name="ip[]"/></TD> 


     </TR> 
    </TABLE> 

자바 스크립트 아래로 보이는 경우에만 삽입하고 지금은 행을 삭제합니다. 저장 입력은 현재 비어 있습니다.

function addRow(tableID) { 

      var table = document.getElementById(tableID); 

      var rowCount = table.rows.length; 
      var row = table.insertRow(rowCount); 

      var colCount = table.rows[0].cells.length; 

      for(var i=0; i<colCount; i++) { 

       var newcell = row.insertCell(i); 

       newcell.innerHTML = table.rows[0].cells[i].innerHTML; 
       //alert(newcell.childNodes); 
       switch(newcell.childNodes[0].type) { 
        case "text": 
          newcell.childNodes[0].value = ""; 
          break; 
        case "checkbox": 
          newcell.childNodes[0].checked = false; 
          break; 
        case "select-one": 
          newcell.childNodes[0].selectedIndex = 0; 
          break; 
       } 
      } 
     } 


    function deleteRow(tableID) 

    { 
     try { 
     var table = document.getElementById(tableID); 
     var rowCount = table.rows.length; 

     for(var i=0; i<rowCount; i++) { 
      var row = table.rows[i]; 
      var chkbox = row.cells[0].childNodes[0]; 
      if(null != chkbox && true == chkbox.checked) { 
       table.deleteRow(i); 
       rowCount--; 
       i--; 
      } 


     } 
     }catch(e) { 
      alert(e); 
     } 
    } 

    function saveRow(tableID){ 

     table.saveRow(i); 
    } 

    function editRow(tableID){ 

    } 

어떤 아이디어를 사용합니까? 전체 작업이 로컬 컴퓨터에서 로컬로 실행되기 때문에 차라리 javascript를 사용하려고합니다.

답변

0

클라이언트 측 JS에서 파일을 읽고 쓸 수 없습니다. ajax를 사용하여 서버로 데이터를 보내고 서버 컴퓨터에 저장할 수 있습니다. 당신이 서버를 사용하지 않으려는 경우

, 브라우저에서 일부 데이터를 저장하는 방법이 있습니다 :

  • 사용 LocalStorage
  • 사용 쿠키 (5메가바이트 주위로 제한, 브라우저에 따라 다를 수 있음) (LocalStorage보다 적은 메모리)

FileSystem API는 현재 비표준이므로 모든 브라우저에서 지원하지는 않습니다.

0

NPM 플러그인 : https://www.npmjs.com/package/file-saver

또는 크롬 : 파일 시스템 API, IE : navigator.msSaveBlob 등

bowser 특정 브라우저를 확인하기 위해, 당신이 아닌 파일 시스템 API 브라우저를위한 플래시 스크립트를 주입 할 수 나중에, 또는 특정 JS 라이브러리를 네이티브 시스템 인터페이스에 사용하십시오.

+0

보안은 어떻게됩니까? – Whatever

+0

브라우저는 일반적으로 사용자에게 추가 보안 사용 권한을 허용할지 묻는 메시지를 표시하지만 https://caniuse.com/#search=filesystem에도 제대로 지원되지 않습니다. – neaumusic

0

이것은 완전한 예가 아니며 아마도 포인터를 줄 수 있습니다.

function txt(link) { 
 
    link.setAttribute('href', 'data:text/plain,' + encodeURI(document.getElementById('save').value)); 
 
}
<input type='text' value='Hello world' placeholder='Save as .txt' id='save' autofocus='' /> 
 
<a id='link' target='_blank' onclick='txt(this);' download='note.txt'><input type='button' value='Save as .txt' /></a>

PS. HTML 5 지원이 필요합니다!