2012-05-05 2 views
1

로컬 저장소에서 일부 항목을 검색하려고 시도하고 있는데, 거기에있는 경우 페이지에 일부 내용을 표시합니다. 얻을 수 없다)jQuery 및 로컬 저장소 비정상적인 동작

//THIS FUNCTION FAILS WHEN CALLED!! 
function unHideAll() 
{ 
    /* 
    $('#radio-choice-1').checkboxradio('enable'); 
    $('#radio-choice-2').checkboxradio('enable'); 
    $('#radio-choice-1-board').checkboxradio('enable'); 
    $('#radio-choice-2-board').checkboxradio('enable'); 
    $('#TransNum').textinput('enable'); 
    $('#UserContinue').remove(); 
    $('#nextButton').show(); 
    */ 
}; 

을 내가 얻고 문제는 unHideAll (이다 :

function loadData() 
{  
    var transData = storage.get('TransInfo'); 

    if(transData != undefined) 
    { 
     $('#UserName').val(transData[0]); 

     if(transData[1] == 'Blue') 
     { 
      $('#radio-choice-1').attr('checked', true); 
     } 
     else 
     { 
      $('#radio-choice-2').attr('checked', true); 
     } 

     $('#TransNum').val(transData[2]); 

     if(transData[3] == 'A') 
     { 
      $('#radio-choice-1-board').attr('checked', true); 
     } 
     else 
     { 
      $('#radio-choice-2-board').attr('checked', true); 
     } 

     unHideAll(); 
     return true; 
    } 
}; 

을 그리고 데이터를 마지막으로로드 할 때, 나는) unHideAll을 (전화를 걸 : 여기에 내가 뭘하려고 오전입니다 어딘가에. 상단에 경고()를 표시하면 표시되지만 하단에 경고()를 표시하면 결코 표시되지 않습니다. 왜 그런가?

$(document).ready(function() 
{ 
    clearStorage(); 
    loadData(); 
    unHide();   
    collectData(); 
}); 

어떤 생각 나는 unHideAll을받을 수없는 이유() 아무것도 할 : 여기

내가 메소드를 호출하고 어떻게? 그것은 기존의 unHide() 메서드에서 작동하는데, 아직 로컬 저장소가 없는데 사용하지만 로컬 저장소가 있으면 빠르게 실패하는 경향이 있습니다.

아이디어가 있으십니까?

는 편집 :

여기

내 로컬 스토리지 코드 :

window.storage = { 
    store:localStorage, 
    get: function(key) 
    { 
     try 
     { 
      return JSON.parse(this.store[key]); 
     } 
     catch(e) {}; 

     return undefined; 
    }, 
    set: function(key, value) 
    { 
     try 
     { 
      this.store[key] = JSON.stringify(value); 
     } 
     catch(e) {}; 
    } 
}; 

편집 2 : 여기

그리고는 그것이 작동하지 않습니다 이유는 수수께끼 왜이다, 작동하는 몇 가지 코드 내 새로운 방법으로.

정말 이상한
//THIS CODE WORKS FLAWLESSLY TO REVEAL ITEMS!! 
$('#UserContinue').click(function() 
{ 
    if($('#UserName').val() == '') 
    { 
     alert('Please Enter a User Name First!'); 
     return false; 
    } 
    else 
    { 
     User_Name = $('#UserName').val(); 
     $('#radio-choice-1').checkboxradio('enable'); 
     $('#radio-choice-2').checkboxradio('enable'); 
     $('#radio-choice-1-board').checkboxradio('enable'); 
     $('#radio-choice-2-board').checkboxradio('enable'); 
     $('#TransNum').textinput('enable'); 
     $('#UserContinue').remove(); 
     $('#nextButton').show(); 

     confirm('Welcome ' + User_Name +'!'); 

     return true; 
    } 

    return true; 
}); 

...

+3

'storage.get ('TransInfo') '무엇을, 나는'localStorage.getItem ('TransInfo ')가' – thecodeparadox

+0

내가'해야한다고 생각 @thecodeparadox를 다시 시작하는 것은 일반적인 구문이며, 반환 된 transData를 콘솔에 기록합니다. 뭔가가 돌아오고있는 배열이 아니라는 것을 알려주고 있습니다. 아무 것도 얻지 못했다면 콘솔에 오류 메시지가 있습니까? – adeneo

+0

나는 내 자신의 저장 방법을 가지고있다. 편집으로 여기에 올릴 것이다. – Brendan

답변

2

unHideAll의 코드() 완전히 잘못에 데이터를 설정하지 마십시오. checkboxradio() 또는 textinput()과 같은 메소드가 없습니다. 따라서 함수가 호출 될 때 오류가 발생하고 설명하는 동작이 생성됩니다.
읽고, 자주 묻는 질문 jQuery로/비활성화 양식 요소를 사용하려면 : http://docs.jquery.com/Frequently_Asked_Questions#How_do_I_disable.2Fenable_a_form_element.3F

+0

좋은 눈, 그저 눈치 챘지만,이 답변을 보지 못했지만 OP에 실제로 이러한 방법이있을 수 있습니다! – adeneo

+0

그건 이상한데, 코드에서 이전과 똑같은 방법을 사용했기 때문에 완벽하게 작동합니다. – Brendan

+0

어떤 라이브러리를 사용하고 있습니까? jQuery 만? –

0

당신은 단순히이 시도 할 수 있습니다 :

window.storage = { 
    store:localStorage, 
    get: function(key) 
    { 
     var ret = this.store.getItem('key'); 
     if(ret) { 
      return JSON.parse(ret); 
     } 
     return undefined; 
    }, 
    set: function(key, value) 
    { 
     this.store.setItem(key, JSON.stringify(value)); 
    } 
}; 

참고 : get 기능에

  1. 내가 볼 수 없습니다 localStorage
  2. 를 읽는 모든 항목
  3. set 기능은 localStorage
+0

실제로 저장소를 가져오고 설정하고 다시 읽습니다! 당신은 typo,'if (reg)','reg' 란 무엇입니까? – adeneo

+0

@adeneo 감사합니다. – thecodeparadox

+0

내 두 번째 편집을 확인하십시오. – Brendan

관련 문제