如何创建一个对 Javascript 中先前函数生成的内容作出反应的函数

Posted

技术标签:

【中文标题】如何创建一个对 Javascript 中先前函数生成的内容作出反应的函数【英文标题】:How to create a function that reacts to what a previous function generated in Javascript 【发布时间】:2020-06-29 02:13:32 【问题描述】: 我创建了两个函数(F1F2F1 创建一个随机答案 F2 应该对生成的答案F1 提供反馈 (if(antw == ant) 我的问题是如何让F2 使用随机答案F1 生成,所以反馈是正确的?

var operators = ['+','-'];

function F1()
    
  	Z1 = document.getElementById("Z1");
    	Z2 = document.getElementById("Z2");
    	oper=document.getElementById("operator");
    	answer=document.getElementById("answer");
    	
        rZ1 = Math.floor((Math.random()*10));
    	rZ2 = Math.floor((Math.random()*10)+1);
    	op = operators[Math.floor(Math.random()*2)];
   		
        Z1.innerhtml=rZ1;
    	Z2.innerHTML=rZ2;
    	oper.innerHTML=op;
    	answer.innerHTML = eval(rZ1 + op + rZ2);      


document.getElementById("button2").addEventListener("click", F2);

function F2()

	antw = parseInt(document.getElementById("userAnswer").value, 10);
	feedBack = document.getElementById("feedBack");
	ant = document.getElementById("answer");

	
	if(antw == ant) 
	feedBack.textContent = "right";

	 else 
	feedBack.textContent = "wrong";
	
 	
;
<button onclick="F1()"> New </button>

<p> 
    	<label id="Z1"> </label> 
    	<label id="operator"> </label>
   	<label id="Z2"> </label>
      = <input id = "userAnswer" type=text>
        <button id = "button2" >answer</button>
</p>   

<p id = "feedBack"> </p>

<p><label id="answer"> </label></p>

【问题讨论】:

【参考方案1】:

您可以在函数 F1 的末尾调用 F2,并将答案作为参数传递给 F2。

function F2(answer)
    //logic to check answer
    return feedback


function F1()
   //logic to calculate answer
   F2(answer)

您可以使用您的原始代码,只需要修复代码中的一个小问题。您忘记使用 textContent 从您的 html 中获取值,因此您将未定义的值与您的答案进行比较

ant = document.getElementById("answer").textContent;

【讨论】:

我现在试过了,但反馈仍然是“错误的”,即使它应该回答“正确”。 @colin 你可以直接在给定的代码中编辑它,这样我就可以更好地理解你的意思。

以上是关于如何创建一个对 Javascript 中先前函数生成的内容作出反应的函数的主要内容,如果未能解决你的问题,请参考以下文章

如何形象地解释 JavaScript 中 map,foreach,reduce 间的区别

如何使用函数重新评估 Python 中先前评估的变量?

如何使用先前状态更新字符串的状态

JavaScript强化教程——函数参数

如何使用Javascript根据先前的下拉值显示第二个下拉列表

javascript类型系统——包装对象