【发布时间】:2012-05-14 20:37:50
【问题描述】:
我正在尝试从本地存储中检索一些项目,如果它们在那里,则在页面上显示一些内容。这是我想要做的:
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;
});
这真的很奇怪......
【问题讨论】:
-
storage.get('TransInfo')是什么,我觉得应该是localStorage.getItem('TransInfo') -
我附议@thecodeparadox,这是通常的语法,也将返回的 transData 记录到您的控制台,有些东西告诉我它不是您要返回的数组,如果您要返回任何东西各位,您的控制台中是否有错误消息?
-
我有自己的存储方式,我把它放在这里作为编辑
-
另外,当我使用 alert() 记录 transData 时,所有数据都存在并正确添加到页面中,但我无法取消隐藏字段。
-
好吧,
checkboxradio()和textinput()函数到底在做什么,它们是否定义在正确的范围内,是否可以链接,并且最重要的是可以工作?
标签: javascript jquery html jquery-mobile local-storage