Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/395.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何存储和检索我创建的javascript变量?_Javascript_Arrays_Forms - Fatal编程技术网

如何存储和检索我创建的javascript变量?

如何存储和检索我创建的javascript变量?,javascript,arrays,forms,Javascript,Arrays,Forms,我正在研究一个我发布的问题的后续问题,这个问题已经解决了 在我的应用程序中,我从输入表单(重力表单列表字段)的动态字段中获取一个值数组。可以通过以下方式创建具有相同结构的测试阵列: var entries = new Array(); entries[0] = new Array( 1, 1, 2016, "9:00", "am", "5:00", "pm"); entries[1] = new Array( 1, 2, 2016, "9:10", "am", "5:10", "pm"); 从

我正在研究一个我发布的问题的后续问题,这个问题已经解决了

在我的应用程序中,我从输入表单(重力表单列表字段)的动态字段中获取一个值数组。可以通过以下方式创建具有相同结构的测试阵列:

var entries = new Array();
entries[0] = new Array( 1, 1, 2016, "9:00", "am", "5:00", "pm");
entries[1] = new Array( 1, 2, 2016, "9:10", "am", "5:10", "pm");
从左到右,这些值是:月、日、年、开始时间、开始时间段、结束时间段、结束时间段

因为它是一个动态输入-在一个真实的提交上可以有任意数量的子数组

我的目标是拥有一个unix时间戳数组,可以用来对表单提交进行验证。一个验证将是“当前日期是否比上次提交日期晚6个月以上”。

下面的代码演示如何生成时间戳

我正在寻找一种向数组中添加无限数量时间戳的方法。

我也在寻找一种定位时间戳的方法,一旦我有了时间戳

// Create an array to collect timestamps
var sessions = new Array();

// Ready the Zero Prepend-er so dates are always correct
function twoDigitFormat( num ) {
    return ( num.toString().length < 2 ? "0"+num : num ).toString();
}

// Loop through entries array to get each entry array
for ( i = 0; i < entries.length; i++ ) {
  var entry = entries[i];

  // Loop through each entry array to get the values
  for ( j = 0; j < entry.length; j++ ) {
    var value = entry[j];

    // get all of the parts
    var month = twoDigitFormat(entry[0]);
    var day = twoDigitFormat(entry[1]);
    var year = entry[2];
    var stime = entry[3];
    var stimeperiod = entry[4];
    var etime = entry[5];
    var etimeperiod = entry[6];
  }

  // Make Human Timestamps for each entry array
  var sessionStartString = month+'-'+day+'-'+year+' '+stime+''+stimeperiod;
  var sessionEndString = month+'-'+day+'-'+year+' '+etime+''+etimeperiod;

  // I'm using moments.js for time handling     
  // Make Session Moments for each timestamp
  var sStartMoment = moment( sessionStartString, "MM-DD-YYYY HH:mm a");
  var sEndMoment = moment( sessionEndString, "MM-DD-YYYY HH:mm a");

  // Make UNIX format moments for each timestamp
  var sStartUnix = sStartMoment.unix();
  var sEndUnix = sEndMoment.unix();

  // Add each UNIX timestamp to the sessions array
  // How do I add arrays with a variable as a key? I don't want to 
  // specify the key. Someone should be able to create 10 entries, 
  // or 20 entries, or .. whatever count.
  sessions[0] = new Array ( sStartUnix );
  sessions[1] = new Array ( sEndUnix ); 
}

// Get the current time (and as UNIX)
var now = moment();
var nowUnix = now.unix();

// Loop through sessions
for ( l = 0; l < sessions.length; l++ ) {
    var session = sessions[l];  

  // How do I get things out of the array of timestamps? 
  // My current code results in session[key] being UNDEFINED?
  var lastSession = session[session.length-1];      

}

// Do stuff - like math, to run validations
// I know this isn't correct, but the idea will be to get
// a difference in hours
var lastNowDiff = nowUnix - lastSession;

if ( lastNowDiff > 4320 ) {
  alert('The submission date must be within 6 months.');
}
//创建一个数组来收集时间戳
var sessions=newarray();
//准备好零前置器,以便日期始终正确
函数twoDigitFormat(num){
返回(num.toString().length<2?“0”+num:num.toString();
}
//循环遍历条目数组以获取每个条目数组
对于(i=0;i4320){
警报(“提交日期必须在6个月内”);
}

如果您有时间查看的话,我有它。

使用数组的推送方法

例如:

var entries = new Array();
entries.push(new Array( 1, 1, 2016, "9:00", "am", "5:00", "pm"));
您可以像这样添加任意数量的数组


Complete Fiddle:

使用JavaScript
Date
对象进行解析和验证。

谢谢@sundar,这是一个很好的线索。我更新了小提琴以反映这一建议。通过使用sessions.push(新数组(sStartMoment,sEndMoment))在第49行,我可以开始将我的条目放入所需的数组(提交)。我仍在努力寻找一种方法来获取有用的日期/时间戳之间的差异。为什么你不能试试moment library,它是一个非常棒的用于日期比较和日期相关内容的库,而不是使用原生日期?我已经加载了moment.js。也许我没有正确地使用它。