1

ローカル ストレージからいくつかのアイテムを取得しようとしています。それらが存在する場合は、ページのコンテンツを表示します。これが私がやろうとしていることです:

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() を呼び出します。

//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() がどこにも到達しないことです。上部に alert() を配置すると表示されますが、下部に alert() を配置すると表示されません。理由はありますか?

メソッドを呼び出す方法は次のとおりです。

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

これは本当に奇妙です...

4

2 に答える 2

2

unHideAll()のコードは完全に間違っています。checkboxradio()やtextinput()のようなメソッドはありません。これが、関数が呼び出されたときにエラーが発生し、説明した動作を生成する理由です。
jQueryでフォーム要素を有効/無効にするには、FAQをお読みください:http: //docs.jquery.com/Frequently_Asked_Questions#How_do_I_disable.2Fenable_a_form_element.3F

于 2012-05-05T16:02:12.590 に答える
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));
    }
};

ノート:

  1. あなたのget関数には、localStorage
  2. set関数はデータをに設定しませんlocalStorage
于 2012-05-05T16:00:37.197 に答える