sum 变量未聚合

问题描述 投票:0回答:1

我正在尝试建立一个脚本来计算每月贷款还款额,但条件是如果贷款期限少于4个月,则不收取利息。但在第 25 行我收到错误 Monthcredit undefined,我该如何解决这个问题?结果显示在链接#msum 和#ovsum 上。蒂尔达网站建设者。

错误代码 -

<!-- Как сделать калькулятор расчета аннуитетных платежей по кредиту в ZeroBlock в Tilda mo-ti.ru --><script src="https://static.tildacdn.com/js/jquery-1.10.2.min.js" charset="utf-8" onerror="this.loaderr='y';"></script>
<style>
    a[href="#msum"] , a[href="#ovsum"] {pointer-events:none;}
</style>
<script>
    $( document ).ready(function() {
    //Значение процента    
    var percent = 10;
    $(".tn-atom__form").on('input', ".t-range", function() {
        setTimeout(function(){
             let summa = $('input[name="summa"]').next('.t-range__value-txt').html();
             let srok = $('input[name="srok"]').next('.t-range__value-txt').html();
             let monthPercent = percent/100/12;
             //Возведение в степень
             let degree = Math.pow( 1+monthPercent , -srok);
             if (srok <= 4) {
                 let monthCredit = summa/srok;
             let overCredit =0
             } else {
             let monthCredit = summa*(monthPercent/(1-degree));
             let overCredit = monthCredit*srok-summa
                 
             }
             //Выводим итоги в текст
             monthCredit = monthCredit.toFixed();
                 overCredit = overCredit.toFixed();
                 monthCredit = monthCredit.replace(/(\d)(?=(\d\d\d)+([^\d]|$))/g, '$1 ');
                 overCredit = overCredit.replace(/(\d)(?=(\d\d\d)+([^\d]|$))/g, '$1 ');     
             $('a[href="#msum"]').html(monthCredit+' руб.');
             $('a[href="#ovsum"]').html(overCredit+' руб.');
        }, 100);
    });
});
</script>

我有相同的工作脚本,但它没有提供大约4个月的条件(附在下面)-

工作代码-

 <!-- Как сделать калькулятор расчета аннуитетных платежей по кредиту в ZeroBlock в Tilda mo-ti.ru --><script src="https://static.tildacdn.com/js/jquery-1.10.2.min.js" charset="utf-8" onerror="this.loaderr='y';"></script>
<style>
    a[href="#msum"] , a[href="#ovsum"] {pointer-events:none;}
</style>
<script>
    $( document ).ready(function() {
    //Значение процента    
    var percent = 10;
    $(".tn-atom__form").on('input', ".t-range", function() {
        setTimeout(function(){
             let summa = $('input[name="summa"]').next('.t-range__value-txt').html();
             let srok = $('input[name="srok"]').next('.t-range__value-txt').html();
             let monthPercent = percent/100/12;
             //Возведение в степень
             let degree = Math.pow( 1+monthPercent , -srok);
             let monthCredit = summa*(monthPercent/(1-degree));
             let overCredit = monthCredit*srok-summa
             //Выводим итоги в текст
             monthCredit = monthCredit.toFixed();
             overCredit = overCredit.toFixed();
             monthCredit = monthCredit.replace(/(\d)(?=(\d\d\d)+([^\d]|$))/g, '$1 ');
             overCredit = overCredit.replace(/(\d)(?=(\d\d\d)+([^\d]|$))/g, '$1 ');   
             $('a[href="#msum"]').html(monthCredit+' руб.');
             $('a[href="#ovsum"]').html(overCredit+' руб.');
             
       }, 100);
    });
});
</script>.
javascript html web content-management-system
1个回答
0
投票

monthCredit
标识符仅在任一
if (srok <= 4)
逻辑分支中声明,因此它不会在函数的其余部分尝试使用/引用它的下一个更高范围中声明。

monthCredit
声明移出 if 分支。
overCredit
也一样。

示例:

$( document ).ready(function() {
    var percent = 10;
    $(".tn-atom__form").on('input', ".t-range", function() {
        setTimeout(function(){
             let summa = $('input[name="summa"]').next('.t-range__value-txt').html();
             let srok = $('input[name="srok"]').next('.t-range__value-txt').html();
             let monthPercent = percent/100/12;
             //Возведение в степень
             let degree = Math.pow( 1+monthPercent , -srok);

             let monthCredit = 0;
             let overCredit = 0;

             if (srok <= 4) {
                 monthCredit = summa/srok;
                 overCredit =0
             } else {
                 monthCredit = summa*(monthPercent/(1-degree));
                 overCredit = monthCredit*srok-summa
             }
             //Выводим итоги в текст
             monthCredit = monthCredit.toFixed();
             overCredit = overCredit.toFixed();
             monthCredit = monthCredit.replace(/(\d)(?=(\d\d\d)+([^\d]|$))/g, '$1 ');
             overCredit = overCredit.replace(/(\d)(?=(\d\d\d)+([^\d]|$))/g, '$1 ');     
             $('a[href="#msum"]').html(monthCredit+' руб.');
             $('a[href="#ovsum"]').html(overCredit+' руб.');
        }, 100);
    });
});
</script>
© www.soinside.com 2019 - 2024. All rights reserved.