【问题标题】:Why i sometimes got error and sometimes not?为什么我有时会出错,有时不会?
【发布时间】:2021-02-13 15:05:20
【问题描述】:

此代码应该在用户单击按钮时从数组中获取随机 JSON 数据。我正在使用一个函数来返回一个随机数。但是当我加载页面并单击按钮时,有时会得到随机数据,有时会出错。

这是为什么?提前致谢。

$(document).ready(function () {

    function getRandomInt(min, max) {
        return Math.floor(Math.random() * (max - min + 1)) + min;
    }
    
        
    function renderQuiz() {
        console.log(userdata.USER.TOPSONGS[(getRandomInt(0,2))][(getRandomInt(0,4))].snippet);     
    }
    
    ...

    $('#button').click(function () {
        renderQuiz();
        console.log("userprogress: " + userprogress);

        if (userprogress < 10) {
            userprogress++;
            $('#answered').text(`${userprogress} / 10`);
        } 
        else { window.location.href = '/result'; }
        return;
    });

}); //end document.ready

【问题讨论】:

    标签: javascript html jquery json


    【解决方案1】:

    userdata.USER.TOPSONGS 是否包含一个 3x5 数组,其中定义了所有值并且所有值都有一个 .snippet

    很可能,userdata.USER.TOPSONGS 的某些值 0 &lt;= x &lt;= 20 &lt;= y &lt;= 4 不包含 [x][y].snippet,从而导致此错误。

    请检查您的 userdata.USER.TOPSONGS 数组和/或调整传递给随机数函数的最小值和最大值。

    【讨论】:

    • 是的,它越界了。我犯了愚蠢的错误,之后我应该更加细致。 tq 提醒一下!
    【解决方案2】:

    看起来像是超出了数组的边界。您的 getRandomInt(min, max) 返回随机整数,包括 minmax 值。检查这是否正常。

    【讨论】: