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

时间:2017-12-17 16:56:19

标签: javascript html variables onclick

我正在试图找出为什么我的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>

2 个答案:

答案 0 :(得分:1)

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

  • 注意:我已将type attribute的{​​{1}}更改为文字,以便将其更改为 变量分配在代码段中可见!

&#13;
&#13;
input
&#13;
var userMac;

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

function testVariable(MacAddress) {
  if (MacAddress)
    alert(MacAddress);
}
&#13;
&#13;
&#13;

答案 1 :(得分:1)

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