首页 > 解决方案 > 如何允许函数访问循环中的所有变量并使用 javascript 执行它们?

问题描述

我是 JavaScript 的新手。

我一直在尝试使用数学随机、循环和函数进行小乘法练习。

循环显示所有变量,但该功能仅在我单击检查按钮时运行并显示变量的最后值。

我的脚本如下:

<!DOCTYPE html>
<html>
<head>
<title>Multiplication Drill</title>
</head>
<body>

<p id="demo"></p>

<button onclick="myFunction()">check </button>

<p id="demo1"> </p>
<script>
var text = "";
var i;
for (i = 0; i <3; i++) {
  var x = Math.floor(Math.random()*10);
  var y = Math.floor(Math.random()*10);
  text += x+ " " + "x" + " "+ y + " " + "="+"<br>";
  
  function myFunction(){
  var z = x*y;
  document.getElementById("demo1").innerHTML = z;
  }
}
  document.getElementById("demo").innerHTML = text;
</script>
</body>
</html>

我想这与将 x 和 y 包装成数组或对象有关。我尝试过使用大括号和方括号,我尝试了很多方法。

如何允许函数访问循环中的所有变量并对其进行操作?

非常感谢您的时间和关注。

标签: javascriptfunctionloops

解决方案


你试图这样做吗?

编辑:我看到了你在评论中输入的代码,所以我复制了 html,按了几次 enter 使其缩进(而不是一个连续的行,dw 网站对你粘贴的内容做了那个)现在onclick是函数,在 while 循环的范围内创建函数是错误的。在这种情况下,函数就是你想做的所有事情,所以我让函数围绕着解决方案,

function myFunction(){
  var text = "";
  for (var i = 0; i <3; i++) {
    var x = Math.floor(Math.random()*10);
    var y = Math.floor(Math.random()*10);
    text += x+ " " + "x" + " "+ y + " " + "="+" "+x*y+"\n";
  }
  document.getElementById("demo").innerText=text;
}
<!DOCTYPE html>
<html>
<head>
<title>Page Title</title>
</head>
<body>
   <p id="demo"> </p> 
   <button onclick ="myFunction()"> check</button>
   <p id="demo1"> </p>  
</body>
</html>

对于原始复制粘贴,请看下面

<!DOCTYPE html>
<html>
<head>
<title>Page Title</title>
</head>
<body>
   <p id="demo"> </p> 
   <button onclick ="myFunction()"> check</button>
   <p id="demo1"> </p>
<script>
function myFunction(){
  var text = "";
  for (var i = 0; i <3; i++) {
    var x = Math.floor(Math.random()*10);
    var y = Math.floor(Math.random()*10);
    text += x+ " " + "x" + " "+ y + " " + "="+" "+x*y+"\n";
  }
  document.getElementById("demo").innerText=text;
}
</script> 
</body>
</html>

推荐阅读