javascript - js 回调给出了未定义的 var 以及如何定义回调

标签 javascript callback

我有简单的代码:

<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/

相关文章:

python - Tkinter 回调中的奇怪异常

Bash:将函数作为参数传递

javascript - JQuery列表下拉菜单问题

javascript - 忽略下划线模板中未定义的数据/变量

JavaScript:创建嵌套 UL 的递归函数

android - 为什么从不调用 android 相机中的 PictureCallback?

c# - 将 C 回调函数封装在 C# 函数中

javascript - 替换 WordPress 插件中硬编码的 JavaScript 字符串

javascript - b-list-group-item 中的 v-bind 无法在带有 bootstrap-vue 的 vue CLI-app 中工作

JavaScript 的 setInterval 和函数何时完成