Tilda贷款计算器脚本修复:monthCredit未定义错误
修复Tilda贷款月供计算器的变量未定义错误
问题描述
在Tilda网站构建器中开发贷款月供计算脚本,需求为:贷款期限≤4个月时不收取利息,计算结果需显示在指向#msum和#ovsum的链接中。但添加免息逻辑后,出现monthCredit未定义的错误。
错误原因
原代码中,monthCredit和overCredit变量是在if/else代码块内部通过let声明的,属于块级作用域,在代码块外部(后续的结果处理和DOM赋值部分)无法访问这些变量,因此触发未定义错误。
修复后的代码
<!-- Tilda ZeroBlock贷款等额本息计算器 --> <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, overCredit; 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>
关键修复点
- 将
monthCredit和overCredit变量的声明移至if/else代码块外部,确保后续代码可以访问到这两个变量 - 修正了原代码中
overCredit =0和overCredit = monthCredit*srok-summa缺少分号的语法问题
内容的提问来源于stack exchange,提问作者Andrey SW
相关产品推荐
相关产品推荐

