我使用p5.js创建了以下函数,当页面加载时,mousePressed方法立即触发。它不会等我点击按钮对象来显示包含ans变量的段落。
我做错了什么?
function setup() {
var ans = generate();
var checkMe = createButton('Check Answer');
checkMe.mousePressed(createP(ans));
}
答案 0 :(得分:1)
让我们仔细看看这一行:
checkMe.mousePressed(createP(ans));
这可以分为两行:
var createPValue = createP(ans);
checkMe.mousePressed(createPValue);
换句话说,您正在调用createP()
函数,然后将返回的值(可能是undefined
)传递给mousePressed()
函数。我很惊讶这不会导致JavaScript控制台出错。
相反,您要做的是将函数作为值传递到mousePressed()
函数中。由于您需要使用参数,因此可以这样做:
function callCreateP(){
createP(ans);
}
checkMe.mousePressed(callCreateP);
请注意callCreateP
在将()
函数传递给mousePressed()
函数后,其名称后面没有括号checkMe.mousePressed(function(){ createP(ans); });
。那是因为我们将它用作值而不是直接调用它。
你可以缩短到这一行:
Me