我有简单的代码:
<div id='temp'></div>
<div id='points'></div>
<div onClick ="play(1, 1)" id='click'>clickclickclick</div>
play(function (addpoints) {
document.getElementById('temp').innerHTML = addpoints;
}());
function play (choosecolor, randescolor) {
if (choosecolor == randescolor) {
if (document.getElementById('points').innerHTML === '') {
document.getElementById('points').innerHTML=100;
}
else {
var points = function (allpoints) {
var addpoints = parseInt(allpoints) + 100;
callback(addpoints);
document.getElementById('points').innerHTML=addpoints;
}
}
points(document.getElementById('points').innerHTML);
}
}
我不明白为什么回调可能给我未定义的信息。控制台说回调未定义。这很奇怪,因为它在简单的示例代码上效果很好:
loadStuff(function (data) {
alert('Now we have the data' + data);
});
function loadStuff (callback) {
// Go off and make an XHR or a web worker or somehow generate some data
var data = 'something';
callback(data);
}
我认为关于callback()有一些我不知道也不理解的地方。但什么?为什么它在代码的第二部分上工作,而在第一部分上不能正常工作?
最佳答案
名为 callback
的变量未在您的代码中定义,但在最后一个代码段中,您确实有一个变量 callback
作为函数参数。
您需要引用正确的参数名称:
function play(choosecolor, randescolor){
if(choosecolor==randescolor){
if(document.getElementById('points').innerHTML===''){
document.getElementById('points').innerHTML=100;}
else{
var points = function(allpoints){
var addpoints=parseInt(allpoints)+100;
choosecolor(addpoints); // Refer to choosecolor, not callback
document.getElementById('points').innerHTML=addpoints;
}
}
关于javascript - js 回调给出了未定义的 var 以及如何定义回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30663236/