如何使一个 javascript 函数的一个变量的值在任何其他函数中可用?

How to make the value of one variable of one javascript function available in any other function?

我希望 someDate 的值可用于我的日期选择器的 minDate。目前,我将其保留为 new Date() 以使其正常工作,但取而代之的是我需要一些 Date 值。 someDate 逻辑在 myFunction() 中。我怎样才能做到这一点?

声明全局变量 someDate 无效。 它只传递了今天日期的值。在 myFunction()someDate 中所做的更改需要合并到 Datepicker 函数中。

下面是我的代码。

function myFunction() 
    {
    var check = document.getElementById('check');
    var time = new Date().getHours();
    var currentday=new Date().getDate();
    alert(currentday);
    var someDate = new Date();
    var day=0;
    if(!check.checked && time>10)
    {
      alert(time);
      alert(check.checked);
      day=6-currentday-1;
    
      var someDate = new Date();
    
      if(day>=3)
       {
        alert(day);
        someDate.setDate(someDate.getDate() + 3); 
        alert(someDate);
       }
      else
       {
        alert(someDate);
        someDate.setDate(someDate.getDate() + 5); 
        alert('yayy!!');
       }
    }
    else if(check.checked && time<10)
    {
    alert('Time <10 and checked');
    }
    else if(!check.checked && time <10)
    {
    alert('Time <10 and UNchecked');
    }
    
    else
    {
    alert(time);
      alert(check.checked);
      day=6-currentday-1;
    
      
    
      if(day>1)
       {
        alert(day);
        someDate.setDate(someDate.getDate() + 1); 
        alert(someDate);
       }
    else
    {
    alert(day);
    someDate.setDate(someDate.getDate() + 3); 
        alert(someDate);
    }
    }
    
    
    
    }
    
    $(function() {
    
    alert(window.someDate);
                $( "#datepicker-5" ).datepicker({
    
                   beforeShowDay : function (date)
                   {
                      var dayOfWeek = date.getDay ();
                      // 0 : Sunday, 1 : Monday, ...
                      if (dayOfWeek == 0 || dayOfWeek == 6) return [false];
                      else return [true];
                   },
    
    minDate: someDate
    
                });
             });
<link href="http://code.jquery.com/ui/1.10.4/themes/ui-lightness/jquery-ui.css" rel="stylesheet">
<script src="http://code.jquery.com/jquery-1.10.2.js"></script>
<script src="http://code.jquery.com/ui/1.10.4/jquery-ui.js"></script>
    
    
    <p id="demo"></p>             
          
    
    <p>Enter Date: <input type="text" id="datepicker-5" ></p>
    <input type="checkbox" id="check" onclick="myFunction()" >

解决这个问题不需要全局命名空间。您可以像这样将 myFunction 放入文档就绪处理程序中:

$(function(){
  var someDate;
  function myFunction(){ ... }

  //add the change handler to the checkbox
  $("#check").change(function(){
    myFunction();
  });
}

注意:这会使用 jquery 而不是 dom 添加复选框更改处理程序,因此您的输入标签可以是:

<input type="checkbox" id="check" >

即使您在全局范围内设置 someDate,Datepicker 也不知道要使用新值。 Datepicker 确实有一个refresh method,但为了避免使用全局范围,最好...

像这样使用Datepicker option setter

function myFunction() {
    var someDate;

    // [Do the logic to decide value of someDate] 
    someDate = '+3d';     // three days from today, for example

    // Set the minDate option on the datePicker:
    $('#datepicker-5').datepicker('option', 'minDate', someDate);
}

另请注意:

  • 您应该从主 datePicker 初始化中删除 minDate: someDate
  • 您可能需要查看 jQueryUI 文档以了解 minDate.
  • 的有效值