2016-08-04 2 views
0

JQuery를 사용하여 특정 sessionStorage 값을 삭제할 수 있는지 궁금합니다. 지금까지 입력 필드를 삭제할 수 있지만 sessionStorage 값을 삭제할 수 없습니다. 내 코드는 다음과 같습니다. 여기 JQuery를 사용하여 특정 sessionStorage 값을 삭제하는 방법

https://jsfiddle.net/fj324rzg/1/

HTML 내 jsfiddle JQuery와

var worker_record = []; 
$(document).ready(function(){ 
    workerData(); 
    $('.worker').on('click', function(e){ 
     e.preventDefault(); 
     e.stopPropagation(); 

     var title = $('.title:first').val();    

     var someData = {title: title}; 
     worker_record.push(someData); 

     sessionStorage.worker = JSON.stringify(worker_record); 
     workerData(); 
    }); 

    function workerData(){ 
     var max_fields = 6; 
     var x = 1; 

     if(!(typeof sessionStorage.worker === 'undefined' || sessionStorage.worker.length<1)){ 
      worker_record = JSON.parse(sessionStorage.worker); 
     } 

     $('.add-more').empty(); 
     for(var i=0; i<worker_record.length; i++){ 
      if(x < max_fields){ 
       x++; 
       var title = worker_record[i].title; 

       var worker = '<div><div class="delete-worker"><a title="" href="#">Delete</a></div><select name="title[]" class="title title-options"><option value="Select a Title" selected="selected">Select a Title</option><option value="Boss">Boss</option><option value="Worker">Worker</option><option value="Manager">Manager</option></select></div>'; 

       $('.add-more').append(worker); 
       $('.title:eq('+$('.title-options').length+')').val(title); 
      } 
     } 

     $('.title:first').val('Select a Title'); 
    } 

    $('.add-more').on('click', '.delete-worker', function(e){ 
     e.preventDefault(); 
     e.stopPropagation();  

     $(this).parent('div').remove(); x--; 
    }); 
}); 

답변

2

removEvent.You는 아래 사항을 DOM content.Refer을 제거 할 때 당신은 노동자의 기록을 제거하지 않는

<ul> 
    <li> 
     <div class="worker-container-last"> 
      <label class="worker-label"> 
       <select name="title[]" class="title"> 
        <option value="Select a Title" selected="selected">Select a Title</option> 
        <option value="Boss">Boss</option> 
        <option value="Worker">Worker</option> 
        <option value="Manager">Manager</option> 
       </select> 
      </label> 
     </div> 
     <div class="add-more"></div> 
     <div><a class="worker" title="" href="">Add Another Worker</a></div> 
    </li> 
</ul> 

입니다 Sessionstorage에서 작업자 기록을 삭제하는 방법

worker_record = JSON.parse(sessionStorage.worker); 
    alert(worker_record); 
    worker_record.splice(worker_record.length -1, 1);// Record index passed as 2nd paramter 
    alert(worker_record); 
    sessionStorage.worker = JSON.stringify(worker_record); 
+0

이제 다음과 같은 오류가 발생합니다 : 'Uncaught ReferenceError : x is not defined'else 모든 것이 정상입니다. – obi

+0

함수 외부에서 x에 액세스 할 수 없습니다. 인덱스를 가져와 Dom을 제거한 후 스플 라이스 인수 – tsb

+0

에 전달할 수 있습니다. 이제 입력을 삭제하면 다른 입력을 추가 할 수 없습니다. – obi

관련 문제