问题描述
- 帮我看看 那不对 !!!!!
-
年龄段 后面跟男或者女 二级联动
js
之前不需要 男 女 是一个大神帮我写的代码 代码里我注释 是我后加进去的
但是没加对 求看看
还有就是 结果 精确的俩位的话 在哪加toFixed 我加上不是 0.00 就是 00.0
<script src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.4.2.min.js"></script> <script> var food = { 谷物: { //大米数组中依次存储 热量,蛋白质,脂肪,碳水化合物,胆固醇。。。其他食品同理 //生成数据一定要生成和你表头列数一样的数字数组 大米: [1, 2, 3, 4, 5], 小麦: [2, 3, 4, 5, 6], 玉米: [3, 4, 5, 6, 7]/*..更加多谷物*/ }, 蔬菜: { 大白菜: [2, 3, 4, 5, 6], 菠菜: [3, 4, 5, 6, 7]/*...更多蔬菜*/ } //....更加多食物种类 }; //岁数数组中的营养和上面列出的一致 var age = { 请选择:{ 请选择:[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0] }, '1-7岁': { "女":[1, 2, 3, 4, 5], "男":[1, 2, 3, 4, 5] } , }; </script> 食品:<select id="food1"></select><select id="food2"></select><input type="button" value="添加" onclick="addFood()" /><br /> 年龄段:<select id="age"></select> <select id="sex"></select><br /> <table border="1"> <tr><td>食物名称</td><td>热量</td><td>蛋白质</td><td>脂肪</td><td>碳水化合物</td><td>胆固醇</td><td>操作</td></tr> <tr id="trSum"><td>合计</td><td></td><td></td><td></td><td></td><td></td><td></td></tr> <tr id="trAge"><td>人体正常值</td><td></td><td></td><td></td><td></td><td></td><td></td></tr> <tr id="trDiff"><td>差距值</td><td></td><td></td><td></td><td></td><td></td><td></td></tr> <tbody id="tbFood"></tbody> </table> <script> var sFood1 = $('#food1'), sFood2 = $('#food2'), sAge = $('#age'),sage1 = $('#sex') //去掉第一个名列和最后一个操作列 , tdSums = $('#trSum td:gt(0)') , tdAges = $('#trAge td:gt(0)') , tdDiffs = $('#trDiff td:gt(0)') ////// , tbFood = $('#tbFood') //初始化食品一级分类及事件 for (attr in food) sFood1.append('<option value="' + attr + '">' + attr + '</option>'); sFood1.change(function () { var arr = food[this.value]; sFood2.html(''); for (attr in arr) sFood2.append('<option value="' + attr + '">' + attr + '</option>'); }).trigger('change');//触发一级分类加载2级分类 //初始化年龄段 for (attr in age) sAge.append('<option value="' + attr + '">' + attr + '</option>'); sAge.change(function () { var arr = age[this.value]; //sAge1.html(''); //for (attr in arr) sAge1.append('<option value="' + attr + '">' + attr + '</option>'); tdAges.each(function (index) { this.innerHTML = arr[index]; }); updateSumDiff(); }).trigger('change');//触发onchange更新trAge中的td数值 function updateSumDiff() {//更新合计和差距 var sum = [];//每营养小计 tbFood.find('tr').each(function () { $('td:gt(0)', this).not(':last').each(function (index) { sum[index] = (parseFloat(this.innerHTML) || 0) + (sum[index] || 0); }); }); //更新合计和差距 tdAges.each(function (index) { tdSums.eq(index).html((parseFloat(this.innerHTML) || 0) + (sum[index] || 0)); tdDiffs.eq(index).html((parseFloat(this.innerHTML) || 0) - (sum[index] || 0)); }); } function addFood() { var arr = food[sFood1.val()][sFood2.val()]; var s = '<tr><td>' + sFood2.val() + '</td>'; for (var i = 0; i < arr.length; i++) s += '<td>' + arr[i] + '</td>'; s += '<td><input type="button" value="删除" onclick="removeFood(this)"/></td></tr>'; tbFood.append(s); updateSumDiff(); } function removeFood(o) { $(o).closest('tr').remove(); updateSumDiff(); } </script>
解决方案
你改我代码都改错了,要去掉最后一个td,自己看下数据结构,你的变量sex名称我也改成sSex了,
<script src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.4.2.min.js"></script>
<script>
var food = {
谷物: {
//大米数组中依次存储 热量,蛋白质,脂肪,碳水化合物,胆固醇。。。其他食品同理
//生成数据一定要生成和你表头列数一样的数字数组
大米: [1, 2, 3, 4, 5], 小麦: [2, 3, 4, 5, 6], 玉米: [3, 4, 5, 6, 7]/*..更加多谷物*/
},
蔬菜: {
大白菜: [2, 3, 4, 5, 6], 菠菜: [3, 4, 5, 6, 7]/*...更多蔬菜*/
}
//....更加多食物种类
};
//岁数数组中的营养和上面列出的一致
var age = {
请选择: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
'1-7岁': {
"女": [1, 2, 3, 4, 5],
"男": [3, 4, 5, 6, 7]
},
};
</script>
食品:<select id="food1"></select><select id="food2"></select><input type="button" value="添加" onclick="addFood()" /><br />
年龄段:<select id="age"></select> <select id="sex"><option value="男">男</option><option value="女">女</option></select><br />
<table border="1">
<tr><td>食物名称</td><td>热量</td><td>蛋白质</td><td>脂肪</td><td>碳水化合物</td><td>胆固醇</td><td>操作</td></tr>
<tr id="trSum"><td>合计</td><td></td><td></td><td></td><td></td><td></td><td></td></tr>
<tr id="trAge"><td>人体正常值</td><td></td><td></td><td></td><td></td><td></td><td></td></tr>
<tr id="trDiff"><td>差距值</td><td></td><td></td><td></td><td></td><td></td><td></td></tr>
<tbody id="tbFood"></tbody>
</table>
<script>
var sFood1 = $('#food1'), sFood2 = $('#food2'), sAge = $('#age'), sSex = $('#sex')
//去掉第一个名列和最后一个操作列
, tdSums = $('#trSum td:gt(0)').not(':last')
, tdAges = $('#trAge td:gt(0)').not(':last')
, tdDiffs = $('#trDiff td:gt(0)').not(':last')
//////
, tbFood = $('#tbFood')
//初始化食品一级分类及事件
for (attr in food) sFood1.append('<option value="' + attr + '">' + attr + '</option>');
sFood1.change(function () {
var arr = food[this.value];
sFood2.html('');
for (attr in arr) sFood2.append('<option value="' + attr + '">' + attr + '</option>');
}).trigger('change');//触发一级分类加载2级分类
//初始化年龄段
for (attr in age) sAge.append('<option value="' + attr + '">' + attr + '</option>');
sAge.add('#sex').change(function () {///////
var arr = sAge.val() == '请选择' ? age['请选择'] : age[sAge.val()][sSex.val()];
//sAge1.html('');
//for (attr in arr) sAge1.append('<option value="' + attr + '">' + attr + '</option>');
tdAges.each(function (index) { this.innerHTML = arr[index]; });
updateSumDiff();
}).eq(0).trigger('change');//触发onchange更新trAge中的td数值
function updateSumDiff() {//更新合计和差距
var sum = [];//每营养小计
tbFood.find('tr').each(function () {
$('td:gt(0)', this).not(':last').each(function (index) {
sum[index] = (parseFloat(this.innerHTML) || 0) + (sum[index] || 0);
});
});
//更新合计和差距
tdAges.each(function (index) {
tdSums.eq(index).html((parseFloat(this.innerHTML) || 0) + (sum[index] || 0));
tdDiffs.eq(index).html((parseFloat(this.innerHTML) || 0) - (sum[index] || 0));
});
}
function addFood() {
var arr = food[sFood1.val()][sFood2.val()];
var s = '<tr><td>' + sFood2.val() + '</td>';
for (var i = 0; i < arr.length; i++) s += '<td>' + arr[i] + '</td>';
s += '<td><input type="button" value="删除" onclick="removeFood(this)"/></td></tr>';
tbFood.append(s);
updateSumDiff();
}
function removeFood(o) { $(o).closest('tr').remove(); updateSumDiff(); }
</script>
解决方案二:
仔细看了你的提问内容,没有找到关于问题现象的描述
你这样让别人很难帮助你啊
提问者应该在如何节省回答者时间上下功夫。否则问题会被无视的。
解决方案三:
改成这样就可以了!
sAge.change(function () {
var arr = age[this.value];
sage1.html('');
for (attr in arr) sage1.append('<option value="' + attr + '">' + attr + '</option>');
tdAges.each(function (index) { this.innerHTML = arr[index]; });
updateSumDiff();
}).trigger('change');//触发onchange更新trAge中的td数值
解决方案四:
并没有看到要问什么,,
解决方案五:
有的时候回出现这种情况 所以想精确一下 但是 我加toFixed 不是 00.00 就是 0.00.0 这样
我想让他初始页面是这样呢
时间: 2024-09-22 07:13:23