在jQuery中将数组的值从一个函数实例化为另一个函数

时间:2019-02-03 13:13:35

标签: javascript jquery

我想获取附加到id的jquery函数的结果并更改例如

    <script>
$('#dateID').change(function(){
      var bookday = $(this).val();      
      $.post('getDates.php',{postbookday:bookday},
        function(data){ 
          var array = JSON.parse("[" + data + "]");
          var list = []; 
          var newArray = array.flat([2]);
          for (var i = 0; i < newArray.length; i++) {
            list.push(newArray[i]);                 
          }; 

          if (list.length>96) {
            alert("Sorry, day fully booked!");            
          }
          else{
            function selectedTime(list) {                  
            return [a, b, c];
          }
          var result = selectedTime(list);     
          var myArray = [];      
          for (var i=0; i < result[2].length; i++) {
            if (result[2][i] === '09:00') {
              myArray.push(['09:00','10:00']);              
            }
            if (result[2][i] === '10:00') {

              myArray.push(['10:00','11:00']);   

              // here is myArray           

            }
          } 
        }
      });      
    });
</script>

,然后将其用作下面另一个不同函数的输入:

$('#disableTimeRangesExample').timepicker(
  {       
    'disableTimeRanges': myArray 
  }
);   

如何在下一个函数中获取myArray?考虑到它不是静态的。

1 个答案:

答案 0 :(得分:3)

您有两个选择:

1。将变量保存在外部范围内:

var myArray;
$('#selectedDate').change(function(
   ...some computations...
   myArray = [['1pm', '2pm']];
});
$('#disableTimeRangesExample').timepicker({       
  'disableTimeRanges': myArray
}); 

2。保存在jQuery数据中

$('#selectedDate').change(function(
   ...some computations...
   $(this).data('array', [['1pm', '2pm']]);
});
$('#disableTimeRangesExample').timepicker({       
  'disableTimeRanges': $('#selectedDate').data('array') || []
});

作为旁注,您可能还需要在每次更改时更新时间选择器。

编辑:要在输入更改时更新时间选择器,您需要将其置于更改事件中:

$('#dateID').change(function(){
  var bookday = $(this).val();      
  $.post('getDates.php',{postbookday:bookday},
    function(data){ 
      var array = JSON.parse("[" + data + "]");
      var list = []; 
      var newArray = array.flat([2]);
      for (var i = 0; i < newArray.length; i++) {
        list.push(newArray[i]);                 
      }; 

      if (list.length>96) {
        alert("Sorry, day fully booked!");            
      }
      else{
        function selectedTime(list) {                  
        return [a, b, c];
      }
      var result = selectedTime(list);     
      var myArray = [];      
      for (var i=0; i < result[2].length; i++) {
        if (result[2][i] === '09:00') {
          myArray.push(['09:00','10:00']);              
        }
        if (result[2][i] === '10:00') {

          myArray.push(['10:00','11:00']);   

          // here is myArray           

        }
      }
      $('#disableTimeRangesExample').timepicker(
         'option', {'disableTimeRanges': myArray}
      );
    }
  });      
});
$('#disableTimeRangesExample').timepicker();