无法弄清楚为什么javascript不存储我的变量

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了无法弄清楚为什么javascript不存储我的变量相关的知识,希望对你有一定的参考价值。

我试图找出为什么我的javascript函数没有存储我的JS变量。

这是问题所在。我使用onclick事件触发storeMacAddress函数,警报显示'userMac'变量正确获取表单值。我需要以后能够使用这个值,所以我需要存储在我的其他函数可以使用的变量中的值。

但是,当我调用我的testVariable函数时,控制台会说没有定义'usermac'变量。

这是javascript:

function storeMacAddress()
{
    var userMac = document.getElementById("MacAddress").value
    alert("testing: " + userMac);
    return userMac;
}

function testVariable(MacAddress)
{
    alert(MacAddress);
}

这是html

<!DOCTYPE html>
<html>
<head>
<title></title>
<script src='./index.js'>
</script>
</head>
<body>

<h1></h1>
<p></p>
<div>
    <form id="userRequest">
    Mac Address: <input type="text" id="MacAddress"><br>
    <input type="submit"
    onclick="storeMacAddress();"
    value="Save Mac Address">

    </form>
</div>


<button onclick="
testVariable(userMac);
">Test</button>



</body>
</html>
答案

由于您在函数内部定义了变量,因此它在函数外部甚至不可见于其他函数,因此我们可以将它定义在所有函数可以访问的位置之外,您可以在函数内部分配值或访问它里面的功能!

  • 注意:我已将type attributeinput更改为文本,以便变量赋值在代码段中可见!

var userMac;

function storeMacAddress() {
  userMac = document.getElementById("MacAddress").value
  if (userMac)
    alert("testing: " + userMac);
  return userMac;
}

function testVariable(MacAddress) {
  if (MacAddress)
    alert(MacAddress);
}
<!DOCTYPE html>
<html>

<head>
  <title></title>
  <script src='./index.js'>
  </script>
</head>

<body>

  <h1></h1>
  <p></p>
  <div>
    <form id="userRequest">
      Mac Address: <input type="text" id="MacAddress"><br>
      <input type="button" onclick="storeMacAddress();" value="Save Mac Address">

    </form>
  </div>


  <button onclick="
testVariable(userMac);
">Test</button>



</body>

</html>
另一答案
  1. 您正在函数范围内创建变量,而不是在闭包内。了解关闭。
  2. 您正在为内联功能布线,这意味着您的返回完全没用。查找“不引人注目的JavaScript”的概念。如果不使用视图绑定层(如JSX),请将JS和HTML分开,即使您这样做,也要将您的服务和视图逻辑分开。
  3. 您正在表单内使用提交。即使这样做了你想要的,页面也会立即重新加载,你会失去一切。查找表单操作。
  4. 要提交到服务器,您的表单字段应该有name

以上是关于无法弄清楚为什么javascript不存储我的变量的主要内容,如果未能解决你的问题,请参考以下文章

无法弄清楚如何正确存储命令行参数[关闭]

无法弄清楚为啥我的注销按钮不起作用(php)[重复]

无法弄清楚为啥我的提交按钮不会提交

试图弄清楚如何将总分恢复到主要打印出来。它正在显示但未存储在变量中

无法弄清楚为啥我的 if 语句不起作用:( if array[i] << average)

无法弄清楚如何保持我的双倍……双倍