Javascript 全局变量未初始化

标签 javascript html input global-variables

我正在制作一个从文本框()获取输入的网页。该页面还具有执行不同功能的三个按钮。这些函数共享许多变量,因此我将大部分变量设为全局变量。我的问题是,当我在文本框中输入文本并单击按钮时,函数会运行,但全局变量不会初始化,因此函数无法正常运行。我需要在函数运行之前初始化变量。 我已将代码尽可能简化以仍然显示问题。我的原始代码有三个按钮和三个函数,这就是我需要使用全局变量的原因。

<html>
  <head>
   <body>
     <form>
     <br><input type="text" class="boxleft" placeholder="type here..." id="Age"/>

     <br> <input type="text" id="retireAge" class="boxleft" placeholder="type here..." />
     </form>

      <button id="test" onclick="CalcNW()" >Test</button>

     <script type="text/javascript">
       //global variables
       var age = document.getElementById("Age").value;
       var rage = document.getElementById("retireAge").value;

      function CalcNW() {
      var workingyears = rage - age;
      alert(workingyears);
      }
 </script>
</body>
</html>

在此示例中,该函数将无法正常工作,因为 rage 和 Age 为空。 无论如何,有没有办法在运行任何函数之前初始化全局变量?

最佳答案

将 js 代码包装在 window.onload 中

window.onload = function(){
      var age = document.getElementById("Age").value;
      var rage = document.getElementById("retireAge").value;

      function CalcNW() {
          var workingyears = rage - age;
          alert(workingyears);
      }
}

关于Javascript 全局变量未初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31325039/

相关文章:

php - TABLE TD 中的可放置和可拖动

javascript - 根据提到的要点在javascript中发送电子邮件正则表达式

javascript - type=”number” 和基于文化的小数点分隔符的 html 标签输入

javascript - 如何计算折线距离?

javascript - 需要使用 HTML Canvas 将鼠标事件转换为移动设备的触摸事件

javascript - 多个实例或子包中的 Axios 默认 header

javascript - 如何滑动整个网页?

html - Twitter Bootstrap 导航列表中的长文本跨越容器边界

javascript - Highcharts 增加/减少输入数据

html - 悬停时的小 CSS 动画