繁体   English   中英

JavaScript函数不适用于在函数之前声明的变量

[英]JavaScript function doesn't work with variable declared before function

我想在函数之前声明一个或多个变量,但是当我执行该函数时,该函数无法正常工作。 我知道在函数内部声明的变量是仅在函数范围内起作用的局部变量。 为什么在函数之外/之前,我的变量不能用作“全局”变量?

<script type="text/javascript">
   var visitors = document.getElementById('tb254597').value;
   function limitVisitors() {
       if ( visitors > 60 ) {
          alert("We can only accommodate 60 people on a group visit. You entered " + visitors + " visitors.");
       }
   }
</script>
  1. 将变量声明和初始化插入函数内部,因为在开始时从变量中获取了初始值,而不是实际值。

    如果需要不在函数外部的变量,最好将其保留在函数内部。

  2. 使用parseInt()将值更改为数字,因为您会从输入中获取字符串。

  3. 在某个地方(可能是在提交时limitVisitors()调用函数limitVisitors()


function limitVisitors() {
    var visitors = parseInt(document.getElementById('tb254597').value, 10);
    if ( visitors > 60 ) {
        alert("We can only accommodate 60 people on a group visit. You entered " + visitors + " visitors.");
    }
}

limitVisitors();

页面加载后,您立即获取tb254597的值。 这将是一个空字符串( '' )。 每次检查时需要获取该值。

写下朋友地址时,请想一想。 写下时,您已经得到了他们的地址。 但是,如果他们搬家怎么办? 如果您转到旧地址,则不会找到朋友。 请务必检查您的朋友的最新地址。

这取决于您如何调用该函数。 无论哪种方式,您都必须将变量传递到函数中,以便函数知道您的值。

与此类似:

<script type="text/javascript">
  // this parameter can be named whatever
  function limitVisitors(param1) {
    if ( param1 > 60 ) {
      alert("We can only accommodate 60 people on a group visit. You entered " + param1 + " visitors.");
    }
  }

  // Just make sure that this value gets passed to the function like this
  var visitors = document.getElementById('tb254597').value;
  limitVisitors(visitors);
</script>

您可能需要考虑使用jQuery,以便可以使用$(document).ready()函数在DOM实际加载时运行。 如果要允许用户输入,则可能需要一个事件绑定,例如单击按钮。

编辑:由于您在HTML元素中使用onchange,因此这应该是您所需要的。 注意函数调用中的更改:

<input type="text" name="Field_Number_of_visitors" size="20" id="tb254597" onchange="limitVisitors(this.value);" />

<script type="text/javascript">
  // this parameter can be named whatever
  function limitVisitors(param1) {
    if ( param1 > 60 ) {
      alert("We can only accommodate 60 people on a group visit. You entered " + param1 + " visitors.");
    }
  }
</script>

我认为您应该这样做:

       function limitVisitors() {
           var visitors = parseInt(document.getElementById('tb254597').value);
           if ( visitors > 60 ) {
              alert("We can only accommodate 60 people on a group visit. You entered " + visitors + " visitors.");
           }
       }

每次调用limitVisitors您将获得值并进行比较。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM