Javascript 将表单数据加载到字符串然后加载到本地存储的最佳方式是什么?

Javascript 将表单数据加载到字符串然后加载到本地存储的最佳方式是什么?,javascript,jquery,Javascript,Jquery,这是将表单数据加载到字符串中然后加载到localStorage的最佳方式吗 这是我自己想出来的,我不擅长编程。它能满足我的需要,但我不确定它是否是防弹代码 <script> var sg = document.getElementById("selectedGateway"); var sd = document.getElementById("selectedDestination"); var dm = document.getElementById("d

这是将表单数据加载到字符串中然后加载到
localStorage
的最佳方式吗

这是我自己想出来的,我不擅长编程。它能满足我的需要,但我不确定它是否是防弹代码

<script>
    var sg = document.getElementById("selectedGateway");
    var sd = document.getElementById("selectedDestination");
    var dm = document.getElementById("departureMonth");
    var dd = document.getElementById("departureDay");
    var dy = document.getElementById("departureYear");
    var rm = document.getElementById("returnMonth");
    var rd = document.getElementById("returnDay");
    var ry = document.getElementById("returnYear");
    var ad = document.getElementById("adults");
    var ch = document.getElementById("option2");

    $("#searchRequestForm").submit(function() {
        var string = 'From: ' + sg.value + ' \nTo: ' + sd.value + ' \nDeparture: ' + dm.value + '/' + dd.value + '/' + dy.value + ' \nReturn: ' + rm.value + '/' + rd.value + '/' + ry.value + ' \nNumber of adults: ' + ad.value + ' \nNumber of children: ' + ch.value;
        localStorage.setItem("string", string);
    });
</script>

var sg=document.getElementById(“selectedGateway”);
var sd=document.getElementById(“selectedDestination”);
var dm=document.getElementById(“部门月份”);
var dd=document.getElementById(“departureDay”);
var dy=document.getElementById(“部门年度”);
var rm=document.getElementById(“returnMonth”);
var rd=document.getElementById(“returnDay”);
var ry=document.getElementById(“返回年”);
var ad=document.getElementById(“成人”);
var ch=document.getElementById(“选项2”);
$(“#searchRequestForm”).submit(函数(){
变量字符串='从:'+sg.value+'\n到:'+sd.value+'\n部分:'+dm.value+'/'+dd.value+'/'+dy.value+'\n返回:'+rm.value+'/'+rd.value+'/'+ry.value+'\n成人人数:'+ad.value+'\n儿童人数:'+ch.value;
setItem(“string”,string);
});

我会使用下面这样的东西,以便处理对象及其属性,而不是一个大字符串。注意,除了jQuery选择器之外,这是纯JavaScript

演示:

要检索数据,请执行以下操作:

var data = JSON.parse(localStorage["mykey"]);
alert(data.sg);
另见:


您可以定义一个如下函数,通过id直接获取值,这样在构建字符串时就更简单了

function form(id) {
    return document.getElementById(id).value;
}

我更喜欢表驱动的方法,因此没有重复的代码():

var id=[
“selectedGateway”、“From:”,
“selectedDestination”,“\nTo:”,
“部门月份”,“\n部门:”,
“出发日”、“/”,
“出发年份”、“/”,
“返回月份”,“\n返回:”,
“返回日”、“/”,
“回归年”、“/”,
“成人”,“\n成人人数:”,
“选项2”,“\n子项数:”;
var submitStr=“”;
对于(变量i=0;i
最好继续问这个问题。谢谢我不知道。谢谢编辑。我还在学习东西。如果存在
JSON.stringify
,为什么不
JSON.parse
?@MattBall-我养成了使用
$.parseJSON()
支持IE7的习惯,但如果我假设支持
JSON.stringify()
,那是毫无意义的。更新了我的答案。谢谢,我一定会尝试这个。看起来很简单。我喜欢这种方法,它保持了字符串的完整性。我可以确认这是可行的,但由于某种原因,我的其他JavaScript代码的一部分停止了工作<代码>$(“#searchRequestForm”).submit(函数(){return popitup({site_url}site/submit_search_by_email'),document.getElementById('page-loader').style.display='block';})@user1736969-如果您仍然需要帮助,我建议您发布一个不同的问题,包括浏览器是否在错误控制台中报告任何脚本错误,以及包含
popitup()
代码。仅供参考,您不能将多行代码放在注释中并使其可读。多行代码必须进入问题或答案。
function form(id) {
    return document.getElementById(id).value;
}
var ids = [
    "selectedGateway", "From: ", 
    "selectedDestination", "\nTo :",
    "departureMonth", "\nDeparture: ", 
    "departureDay", "/",
    "departureYear", "/",
    "returnMonth", " \nReturn: ",
    "returnDay", "/",
    "returnYear",  "/",
    "adults", " \nNumber of adults: ",
    "option2", " \nNumber of children: "];

var submitStr = "";
for (var i = 0; i < ids.length; i+=2) {
    submitStr += ids[i+1] + document.getElementById(ids[i]).value;
}
localStorage.setItem("string", submitStr);