Files
mama-box/topic/jiaoyujin-js/index.html

103 lines
9.1 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,user-scalable=no,viewport-fit=cover">
<meta name="format-detection" content="telephone=no">
<title>教育金每月存多少</title>
<!-- 孕期计算器 · 教育金每月存多少(2026-11-06 用户从 20 个备选里选了 5 个,本页是其中之一)。
按月复利:目标金额按「学费上涨」折到用钱那年,减去已存的钱、育儿补贴(每月 300 元存到 3 岁,可选)的终值,剩下的按每月定投年金反推每月要存多少。
从今天(宝宝没出生也从今天)开始存,到宝宝满 18 / 22 岁那天为止。收益率是假设值,只帮用户估量级,页面写明不构成投资建议,不推荐具体产品。
共用 ../_shared/calc.css + calc.js;自成一页,不引 app.js。 -->
<link rel="stylesheet" href="../_shared/calc.css?v=26110464">
<link rel="stylesheet" href="../_shared/wizard.css?v=26110464">
<style>#res .row b{font-size:17px;white-space:nowrap}:root{--c:#2E9C8A;--c2:#6CCBB8;--cbg:#E6F7F3}</style>
</head>
<body>
<div id="scroll">
<header class="bar" id="bar">
<button class="back" id="back" aria-label="返回"><svg viewBox="0 0 24 24"><path d="M15 5l-7 7 7 7"/></svg></button>
<span class="t">孕期计算器</span>
</header>
<section class="hd"><p>孕期计算器</p><h1>教育金每月存多少</h1><span>从现在开始存,到宝宝上大学能攒够吗</span></section>
<section class="calc">
<div class="res" id="res"><div class="empty">填好马上算出来</div></div>
<div class="fld"><label class="lb" for="cD">宝宝生日<small>没出生就填预产期</small></label><input class="in num" type="date" id="cD"></div>
<div class="fld"><span class="lb">这笔钱什么时候用</span><div class="seg s2" id="cAge"><button type="button" data-v="18">18 岁上大学</button><button type="button" data-v="22">22 岁读研究生</button></div></div>
<div class="fld"><span class="lb">想攒多少(按现在的钱算)</span><div class="seg s2" id="cGoal"><button type="button" data-v="10">10 万</button><button type="button" data-v="30">30 万</button><button type="button" data-v="50">50 万</button><button type="button" data-v="100">100 万</button></div>
<span class="hint">大致参考:公办本科 4 年学费加生活费约 10 万;读研或中外合办约 30 万;出国读本科约 100 万起</span></div>
<div class="fld"><span class="lb">要不要算上学费上涨</span><div class="seg" id="cInf"><button type="button" data-v="0">不算</button><button type="button" data-v="0.02">每年涨 2%</button><button type="button" data-v="0.03">每年涨 3%</button></div>
<span class="hint">学费和生活费每年都在涨,算上更稳妥</span></div>
<div class="fld" data-opt><label class="lb" for="cHave">已经给宝宝存了多少<small>选填</small></label><div class="inw"><input class="in num" type="number" inputmode="decimal" id="cHave" placeholder="比如 2"><em>万元</em></div></div>
<div class="fld"><span class="lb">打算怎么存</span><div class="seg" id="cR"><button type="button" data-v="0.015">稳稳存</button><button type="button" data-v="0.025">稳中求进</button><button type="button" data-v="0.035">多一点收益</button></div>
<span class="hint">按年收益约 1.5%(存款、国债)、2.5%(稳健理财等)、3.5%(波动更大)估算,只是假设,不是承诺</span></div>
<div class="fld"><span class="lb">育儿补贴也存进去吗</span><div class="seg s2" id="cBt"><button type="button" data-v="1">存,每年 3600 元到 3 岁</button><button type="button" data-v="0">不存</button></div></div>
</section>
<section class="sec">
<h2>不同存法比一比</h2>
<p class="lead" id="lead"></p>
<table class="tbl" id="tbl"><thead><tr><th>存法</th><th>每月存</th><th>一共存入</th><th>到时候有</th></tr></thead><tbody></tbody></table>
</section>
<div class="tip"><b>几个小建议:</b>早存比多存管用,时间越长复利越明显;教育金要专款专用,选本金稳的方式,别追高收益;每年宝宝生日看一眼进度,收入涨了就加一点。</div>
<p class="foot">按假设收益估算,仅供参考,不构成投资建议。</p>
</div>
<script src="../_shared/calc.js?v=26110464"></script>
<script>
(function () {
'use strict';
var C = window.CK, $ = C.$, DAY = C.DAY;
C.shell();
var st = C.store('mmbox.calc.jiaoyujin', { d: '', age: '', goal: '', inf: '', have: '', r: '', bt: '' });
if (!st.d) { var sd = C.savedDue(); if (!isNaN(sd)) st.d = C.fmt(sd); }
['Age', 'Goal', 'Inf', 'R', 'Bt'].forEach(function (k) { C.seg($('#c' + k), st, k.toLowerCase(), paint); });
[['#cD', 'd'], ['#cHave', 'have']].forEach(function (p) { var e = $(p[0]); e.value = st[p[1]]; e.addEventListener('input', function () { st[p[1]] = e.value; paint(); }); });
var RN = { 0.015: '稳稳存', 0.025: '稳中求进', 0.035: '多一点收益' };
/* r 年收益:返回 { pmt 每月要存, n 月数, put 一共存入, fv 到时候总额 } */
function plan(r, n, target, have, bt, sub) {
var i = r / 12, g = Math.pow(1 + i, n);
var fvHave = have * g, fvBt = 0;
for (var k = 0; k < sub; k++) fvBt += 300 * Math.pow(1 + i, n - k - 1);
if (!bt) fvBt = 0;
var need = target - fvHave - fvBt, ann = i ? (g - 1) / i : n;
var pmt = Math.max(0, need / ann);
return { pmt: pmt, put: pmt * n + have + (bt ? 300 * sub : 0), fv: pmt * ann + fvHave + fvBt };
}
function paint() {
st.save();
var R = $('#res'), tb = $('#tbl tbody'), b = C.parse(st.d);
if (isNaN(b) || st.age === '' || st.goal === '' || st.inf === '' || st.r === '' || st.bt === '') { R.innerHTML = '<div class="empty">填好马上算出来</div>'; tb.innerHTML = ''; $('#lead').textContent = ''; return; }
var now = C.today(), end = C.addMonths(b, 12 * st.age);
var n = Math.round((end - now) / DAY / 30.44);
if (n < 12) { R.innerHTML = '<div class="empty">离用钱不到 1 年了,检查一下生日填对了没有</div>'; tb.innerHTML = ''; return; }
var yrs = n / 12, target = st.goal * 1e4 * Math.pow(1 + st.inf, yrs), have = (+st.have || 0) * 1e4;
/* 育儿补贴:宝宝 3 岁前每月按 300 元存入(没出生的从出生那月开始),存进来的月数 */
var sub = Math.max(0, Math.min(36, Math.round((C.addMonths(b, 36) - Math.max(now, b)) / DAY / 30.44)));
var p = plan(st.r, n, target, have, st.bt, sub), late = n <= 48 ? null : (function () { /* 晚 3 年开始:已存的钱和这 3 年的育儿补贴先放着生息,之后再按月存 */
var i = st.r / 12, h = have * Math.pow(1 + i, 36);
if (st.bt) for (var k = 0; k < Math.min(sub, 36); k++) h += 300 * Math.pow(1 + i, 36 - k - 1);
return plan(st.r, n - 36, target, h, 0, 0);
})();
R.innerHTML = '<small>到宝宝 ' + st.age + ' 岁(' + new Date(end).getUTCFullYear() + ' 年)攒够 ' + st.goal + ' 万' + (st.inf ? '(按学费上涨折算约 ' + C.money(target) + (/万$/.test(C.money(target)) ? '' : ' 元') + ')' : '') + ',每月要存</small><span class="big num">' + (p.pmt ? C.money(p.pmt) : '0') + '<u>元</u></span>' +
'<div class="row"><div><small>一共存</small><b class="num">' + Math.round(n / 12) + ' 年</b></div><div><small>存入本金</small><b class="num">' + C.money(p.put) + '</b></div><div><small>收益约</small><b class="num">' + C.money(Math.max(0, p.fv - p.put)) + '</b></div></div>' +
'<span class="note">' + (p.pmt && n > 48 ? '晚 3 年再开始,每月要存 ' + C.money(late.pmt) + ' 元,多 ' + C.money(late.pmt - p.pmt) + ' 元;早存更轻松。' : p.pmt ? '离用钱不远了,早点开始存。' : '已存的钱' + (st.bt ? '加上育儿补贴' : '') + '按这个收益已经够了,不用再每月存。') + '按假设收益估算,不构成投资建议。</span>';
$('#lead').textContent = '同样攒 ' + st.goal + ' 万' + (st.inf ? '(含学费上涨)' : '') + ',收益不同每月要存多少';
tb.innerHTML = [0.015, 0.025, 0.035].map(function (r) {
var q = plan(r, n, target, have, st.bt, sub);
return '<tr' + (r === st.r ? ' class="on"' : '') + '><td><b>' + RN[r] + '</b><br><small>年化 ' + (r * 100).toFixed(1) + '%</small></td><td class="num">' + C.money(q.pmt) + ' 元</td><td class="num">' + C.money(q.put) + '</td><td class="num">' + C.money(q.fv) + '</td></tr>';
}).join('');
}
paint();
})();
</script>
<script src="../_shared/brand.js?v=26110203"></script>
<script src="../../js/share-card.js?v=26110464"></script>
<script>window.mbShare('../../assets/share/t/jiaoyujin-js.jpg', '教育金每月存多少:从现在开始存,上大学能攒够吗'); /* 11-06 微信转发图 */</script>
<script src="../_shared/wizard.js?v=26110464"></script>
<script>CKW.init({ root: '.calc', res: '#res', after: '#scroll > section.calc ~ *' });</script>
<script src="../../js/last-sub.js?v=26110703"></script> <!-- 11-07 小程序刷新回到这一页(见 js/last-sub.js) -->
<script src="../../js/pv.js?v=26110652"></script> <!-- 11-07 页面访问记录(推送效果看板,见 js/pv.js) -->
</body>
</html>