Javascript的全局值在试图通过函数改变后仍然是NULL

Javascript global value remained NULL after attempting to change it via function

本文关键字:函数 改变 NULL 仍然是 全局 Javascript      更新时间:2023-09-26

我试图改变全局变量在javascript后,它在一个下拉列表中拾取变化。

下面是HTML:
<select class='dropdown' id='selection' onChange='checkyo()'>
 <option value="is_revenue">Revenue</option>
 <option value="is_costofrevenue">Cost of Revenue</option>
</select>
下面是javascript:
var isSelected = {}; //global variable
checkyo = function() {
  chosen = document.getElementById("selection").value;
  isSelected = chosen;
};
alert(isSelected);  //check the updated value

我期望isSelected的值是is_revenue或is_costofrevenue取决于用户选择的下拉列表,但然后我的警报显示一个空数组。

在发生任何改变选择框的值之前发出警告。将警报移动到 onchange处理程序(checkyo)中。还要确保您的代码在元素存在之后运行(最简单的方法是将script标记放在页面的末尾,就在结束的</body>标记之前)。

示例:Live Copy

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <title>Example</title>
</head>
<body>
<select class='dropdown' id='selection' onChange='checkyo()'>
 <option value="is_revenue">Revenue</option>
 <option value="is_costofrevenue">Cost of Revenue</option>
</select>
  <script>
    var isSelected = {}; //global variable
    checkyo = function() {
      chosen = document.getElementById("selection").value;
      isSelected = chosen;
      alert(isSelected);  //check the updated value
    };
  </script>
</body>
</html>

onchange事件仅在下拉框元素被更改时触发。警报当前在该处理程序之外。将警报移到checkyo()函数内部。

小提琴来了。

HTML

<select class='dropdown' id='selection' onChange='checkyo()'>
 <option value="is_revenue">Revenue</option>
 <option value="is_costofrevenue">Cost of Revenue</option>
</select>

JS

var isSelected = {}; //global variable
checkyo = function() {
  chosen = document.getElementById("selection").value;
  isSelected = chosen;
  alert(isSelected);  //check the updated value
};