javascript - js函数不返回onclick

标签 javascript function onclick jsfiddle

我创建了一个无法通过 onclick 返回的函数。

我确信我缺少的东西很简单。

HTML:

<html>
<head>
<script type="text/javascript" src="http://code.jquery.com/jquery-latest.js"></script>
<script type="text/javascript" src="schedule.js"></script>
</head>
<body>

     <input type="button" onclick="computeSchedule();" value="Submit" /><br>
     <p id="scheduleOutput"></p>

</body>
</html>

JS:

function computeSchedule(loan_amount, interest_rate, payments_per_year, years, payment) {
var schedule = [];
var remaining = loan_amount;
var number_of_payments = payments_per_year * years;

for (var i=0; i<=number_of_payments; i++) {
    var interest = remaining * (interest_rate/100/payments_per_year);
    var principle = (payment-interest);
    var row = [i, principle>0?principle:0, interest>0?interest:0, remaining>0?remaining:0];
    schedule.push(row);
    remaining -= principle
}

return schedule;
}

var list = JSON.stringify(computeSchedule(100000, 0.005, 12, 15, 843.86), 0, 4)

document.getElementById('scheduleOutput').innerHTML = list;

我可以在jsFiddle onload中得到自动返回的函数,但是当我将 js 设置更改为 "no wrap - in head" 时它不起作用。我假设当我尝试在 jsFiddle 之外运行时,发生的事情也会发生?

最佳答案

您的脚本会在正文内容准备好之前运行。这就是为什么 document.getElementById 似乎不起作用,因为此时不存在这样的元素。

尝试将代码包装在简单的“内容加载”监听器中,以确保它将在所有元素准备就绪后运行:

document.addEventListener('DOMContentLoaded', function() {
    function computeSchedule(loan_amount, interest_rate, payments_per_year, years, payment) {
        var schedule = [];
        var remaining = loan_amount;
        var number_of_payments = payments_per_year * years;

        for (var i=0; i<=number_of_payments; i++) {
            var interest = remaining * (interest_rate/100/payments_per_year);
            var principle = (payment-interest);
            var row = [i, principle>0?principle:0, interest>0?interest:0, remaining>0?remaining:0];
            schedule.push(row);
            remaining -= principle
        }

        return schedule;
    }

    var list = JSON.stringify(computeSchedule(100000, 0.005, 12, 15, 843.86), 0, 4)

    document.getElementById('scheduleOutput').innerHTML = list;
});

是的,您的 onclick 现在没有向该函数传递任何数据。因此,您还需要将参数传递给它,一切都应该正常工作。

关于javascript - js函数不返回onclick,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44640370/

相关文章:

javascript - 使用 jquery 过滤 XML 结果

javascript - jQuery 图片点击事件不起作用

javascript - 行推送到下一个 View react 导航

php - 在 HTML 页面中编写 PHP 代码的首选方法?

c++ - 通过避免函数来提高程序速度? (C++)

javascript - 在函数中使用数组作为参数

Javascript 将一个 onclick 事件附加到所有带有 href 变量的链接

javascript - 在 react-csv 中下载 CSV 后调用函数

javascript - 需要有关 jQuery 工具提示的帮助

javascript - Jquery 选择框。怎么让它出现在最上面