首页 > 解决方案 > JavaScript 变量从 if / function 语句内部返回 undefined

问题描述

我不明白为什么我的全局变量在 if 语句/函数中不起作用。

myBtn = ["btn01", "btn02", "btn03", "btn04"];
var i;
var btnId;
for (i = 0; i < myBtn.length; i++) {
  if (document.getElementById(myBtn[i])) {
    btnId = myBtn[i];
    document.getElementById(btnId).addEventListener("click", function() {
      btnValue = document.getElementById(btnId).value;
      btnName = document.getElementById(btnId).name;
    });
  }
};
console.log(btnValue);
/* Then continue on to use the values from btnValue and btnName */

它的目的是什么;

检查按钮上的 ID 是否存在于 HTML 页面中

如果存在则获取以下标签 (id=, value=, name=)

然后在上面的 if 语句之外使用 3 个值。

显示console.log(btnValue);未定义

标签: javascript

解决方案


我真的不明白你想在这里得到什么。首先,您需要在函数之外声明变量 btnValue,然后在单击时更改其值。其次,当您运行它时,控制台日志首先运行。Console.log 也是一个函数,因此它被推到顶部。最后,即使值发生变化,也没有什么可以再次使 console.log 让您获得该值....您需要为更改注册一个操作。可能以可观察的形式出现。或者至少在每次点击时让它成为 console.log ......


推荐阅读