Javascript JSON数据在设计用于将输入数据与JSON进行比较然后输出的函数中不可访问

Javascript JSON数据在设计用于将输入数据与JSON进行比较然后输出的函数中不可访问,javascript,json,ajax,Javascript,Json,Ajax,问题是在函数calculateInterest中无法访问json数据,并且没有输出 这是显示的错误: 未捕获引用错误:未定义jsonResponse 在calculateInterest(script.js:36) 在XMLHttpRequest.request.onload(script.js:29) 此应用程序的目的是根据输入的数字输出年利息。所有这些都由json数据决定,json数据应将本金值与json值进行比较,然后每年确定利息 这里是该项目的链接 所有类似问题的修复都使用jQuery,

问题是在函数calculateInterest中无法访问json数据,并且没有输出

这是显示的错误:

未捕获引用错误:未定义jsonResponse 在calculateInterest(script.js:36) 在XMLHttpRequest.request.onload(script.js:29)

此应用程序的目的是根据输入的数字输出年利息。所有这些都由json数据决定,json数据应将本金值与json值进行比较,然后每年确定利息

这里是该项目的链接

所有类似问题的修复都使用jQuery,我只允许在这个项目中使用纯JavaScript,因为老师的意图是在没有任何框架的情况下学习

我尝试了基于W3s的XMLHttpRequest,然后尝试在响应中加载函数,以及尝试使用基于W3s的XMLHttpRequest

尽管我在尝试在这两个不同的XMLHttpRequest中键入
calculateInterest(jsonResponse)
时,似乎仍然无法在函数中获取json数据

window.onload = function()
{
    var btn = document.getElementById('btnJson').addEventListener('click', loadJson);

    var principal = document.getElementById('principal').value;
}
//------------------------------描述此应用程序的用途-----------------------------

//HTML中应该提供的是兴趣,这取决于输入中的数字。 //JSON是年度利息的决定者。每年的利息将作为产出

function loadJson()
{


    var requestURL = 'interest.json';

    var request = new XMLHttpRequest();

    request.open('GET', requestURL);

    request.responseType = 'json';
    request.send();


    request.onload = function()
    {
        var jsonResponse = request.response;
        calculateInterest(jsonResponse);
    }



    function calculateInterest()
    {
        if (principal >= jsonResponse[0].from && principal <= jsonResponse[0].up_to)
        {
         //  return document.getElementById('paragraph').innerHTML = jsonResponse[0].interest;
         console.log(jsonResponse[0].interest);
        }

        else if (principal >= jsonResponse[1].from && principal <= jsonResponse[1].up_to)
        {
         //  return document.getElementById('paragraph').innerHTML = jsonResponse[1].interest;
         console.log(jsonResponse[1].interest);
        }


    }

}

//var btn = document.getElementById('btnJSON').addEventListener('click', loadJson);
函数loadJson()
{
var requestURL='interest.json';
var request=new XMLHttpRequest();
打开('GET',requestURL);
request.responseType='json';
request.send();
request.onload=函数()
{
var jsonResponse=request.response;
计算兴趣(jsonResponse);
}
函数calculateInterest()
{

如果(principal>=jsonResponse[0]。from&&principal=jsonResponse[1]。from&&principal这个问题现在已经解决。这是一个链接,指向脚本完成时的外观。我添加了注释,以便对学习感兴趣的人更容易理解。我还注释掉了一些旧东西,以便您可以看到一些被替换的东西


链接到Github上的更新文件:

此问题现已修复。这是一个链接,指向脚本完成后的外观。我添加了注释,以便对学习感兴趣的人更容易理解。我还注释掉了一些旧内容,以便您可以看到一些被替换的内容


链接到Github上更新的文件:

将函数定义“function calculateInterest()”替换为“function calculateInterest(jsonResponse)”。问题是调用calculateInterest(jsonResponse)时,它将jsonResponse作为参数。但函数定义为function calculateInterest().您好!谢谢您的快速回复Jay!您太好了。我已经尝试在下面的函数中添加一个参数,但我的错误是忘记了指定该参数。但是添加该参数后会发生什么事情,这不是我的本意。我认为当nothing正在工作,因此我将其作为下面的参数从jsonResponse中删除。不幸的是,我在添加参数时没有发生任何事情。我还想感谢Andrew的编辑,以使事情更清楚。该程序现在已修复,我想向面临相同问题的其他开发人员提供信息。替换函数定义“func”将“calculateInterest()”设置为“函数calculateInterest(jsonResponse)”。问题是在调用calculateInterest(jsonResponse)时,它将jsonResponse作为参数。但函数定义为函数calculateInterest().您好!谢谢您的快速回复Jay!您太好了。我已经尝试在下面的函数中添加一个参数,但我的错误是忘记了指定该参数。但是添加该参数后会发生什么事情,这不是我的本意。我认为当nothing正在工作,因此我将其作为下面的参数从jsonResponse中删除。不幸的是,当我添加参数时,没有发生任何事情。我还要感谢Andrew的编辑,以使事情更加清楚。该程序现在已修复,我想向面临相同问题的其他开发人员提供信息。