子窗口向父窗口传值并计算的问题,高手来解决一下啊!

hk207 2008-03-10 11:44:39
父窗口:fu.htm

<table width="100%" border="1" align="center" cellpadding="0" cellspacing="0">
<tr>
<td align="center" height="27">学号</td>
<td align="center">姓名</td>
<td align="center">学科</td>
<td align="center">学费</td>
</tr>
</table><br /><br />
<input type="submit" value="选择学生" onclick="window.open('zi.htm','')">
<br />
<br />
总学费:
<input type="text" value="">


子窗口:zi.htm

<table width="100%" border="1" align="center" cellpadding="0" cellspacing="0">
<tr>
<td width="16%" height="27" align="center">学号</td>
<td width="16%" align="center">姓名</td>
<td width="16%" align="center">学科</td>
<td width="16%" align="center">学费</td>
<td width="16%" align="center">选择标志 (全选)</td>
<td width="16%" align="center">性别</td>
</tr>
<tr>
<td align="center" height="27">001</td>
<td align="center">张三</td>
<td align="center">c#</td>
<td align="center">500</td>
<td align="center"><input type="checkbox"></td>
<td align="center">男</td>
</tr>
<tr>
<td align="center" height="27">003</td>
<td align="center">李四</td>
<td align="center">c++</td>
<td align="center">300</td>
<td align="center"><input type="checkbox"></td>
<td align="center">男</td>
</tr>
<tr>
<td align="center" height="27">015</td>
<td align="center">王五</td>
<td align="center">java</td>
<td align="center">200</td>
<td align="center"><input type="checkbox"></td>
<td align="center">女</td>
</tr>
</table>
<p>
<input name="submit" type="submit" value="提交选择" />
</p>

fu1.htm代码:

<table width="100%" border="1" align="center" cellpadding="0" cellspacing="0">
<tr>
<td height="27" align="center">学号</td>
<td align="center">姓名</td>
<td align="center">学科</td>
<td align="center">学费</td>
</tr>
<tr>
<td height="27" align="center">001</td>
<td align="center">张三</td>
<td align="center">c#</td>
<td align="center">500</td>
</tr>
<tr>
<td height="27" align="center">015</td>
<td align="center">王五</td>
<td align="center">java</td>
<td align="center">200</td>
</tr>
</table><br /><br />
<input type="submit" value="选择学生" onclick="window.open('zi.htm','')">
<br />
<br />
总学费:
<input type="text" value="700">

要求是:
1、子窗口的行数是不确定的,举例三行;
2、点击“(全选)”,“checkbox”全部选中;
3、点击“提交选择”按钮,将相关数据传到父窗口fu.htm;
4、fu.htm中的总学费为学费之和;
5、如:我现在选中了张三和王五2行,点击“提交选择”按钮,zi.htm关闭,fu.htm则为如上:(fu1.htm代码)

...全文
680 58 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
58 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
有一些提问的把他自己当作了爷

以为他给了分别人就必须给他完整的答案

思路和方法对他根本不算什么

对这种人就是懒于理睬
  • 打赏
  • 举报
回复
showbo


你也很有耐心
我告诉他那么详细他都懒得自己去写,自己去学
就想别人给答案

对他没什么好处

为了那点分算什么
来这是为分而来吗??

我只为学思路,学方法而来

所以我也只会给他思路和方法,分析给他

懒得写,那就随便他
  • 打赏
  • 举报
回复
<table width="100%" border="1" align="center" cellpadding="0" cellspacing="0"> 
<tr>
<td align="center" height="27"> 学号 </td>
<td align="center"> 姓名 </td>
<td align="center"> 学科 </td>
<td align="center"> 学费 </td>
</tr>
<tbody id="tbItem"></tbody>
</table> <br /> <br />
<input type="submit" value="选择学生" onclick="window.open('zi.htm','')">
<br />
<br />
总学费:
<input type="text" id="totalMoney" value="0"><!--要给个默认值,为0-->
<script type="text/javascript">
//这个方法是提供给子页面操作该页面的
function AddItem(Num,Name,Subject,Money)
{
var row=document.getElementById("tbItem").insertRow();
var td=row.insertCell();
td.innerHTML=Num;
td=row.insertCell();
td.innerHTML=Name;
td=row.insertCell();
td.innerHTML=Subject;
td=row.insertCell();
td.innerHTML=Money;
}
function hasAdd(Num)
{
Num=Trim(Num);
var tbItem=document.getElementById("tbItem");
for(var i=0;i<tbItem.rows.length;i++)
{
if(Num==Trim(tbItem.rows[i].cells[0].innerHTML))
return true;
}
return false;
}
function Trim(Msg)//去除空格的
{
var start=-1,end=-1;
var i=0;
while(i<Msg.length)
{
if(Msg.charAt(i)==' ')
{
start=i;
i++;
}
else break;
}
i=Msg.length-1;
while(i>-1)
{
if(Msg.charAt(i)==' ')
{
end=i;
i--;
}
else break;
}
if(end==-1)
return Msg.substring(start+1);
else
return Msg.substr(start+1,end-start-1);
}
function SetTotalMoney(TotalMoney)//设置总学费
{
document.getElementById("totalMoney").value=TotalMoney+parseFloat(document.getElementById("totalMoney").value);
}
</script>


<table width="100%" border="1" align="center" cellpadding="0" cellspacing="0" id="subTb"> 
<tr>
<td width="16%" height="27" align="center"> 学号 </td>
<td width="16%" align="center"> 姓名 </td>
<td width="16%" align="center"> 学科 </td>
<td width="16%" align="center"> 学费 </td>
<td width="16%" align="center" onclick="SelAll()"> 选择标志 (全选) </td>
<td width="16%" align="center"> 性别 </td>
</tr>
<tr>
<td align="center" height="27"> 001 </td>
<td align="center"> 张三 </td>
<td align="center"> c# </td>
<td align="center"> 500 </td>
<td align="center"> <input type="checkbox"> </td>
<td align="center"> 男 </td>
</tr>
<tr>
<td align="center" height="27"> 003 </td>
<td align="center"> 李四 </td>
<td align="center"> c++ </td>
<td align="center"> 300 </td>
<td align="center"> <input type="checkbox"> </td>
<td align="center"> 男 </td>
</tr>
<tr>
<td align="center" height="27"> 015 </td>
<td align="center"> 王五 </td>
<td align="center"> java </td>
<td align="center"> 200 </td>
<td align="center"> <input type="checkbox"> </td>
<td align="center"> 女 </td>
</tr>
</table>
<p>
<input type="button" value="提交选择" onclick="AddToParent()"/>
</p>
<script type="text/javascript">
function SelAll()
{
var cb=document.getElementsByTagName("input");
for(var i=0;i<cb.length;i++)
{
if(cb[i].type=='checkbox') cb[i].checked=true;
}
}
function AddToParent()
{
var subTb=document.getElementById("subTb");
var totalMoney=0;
var row;
for(var i=1;i<subTb.rows.length;i++)//注意是从1开始,省略了标题行
{
row=subTb.rows[i];
if(row.cells[4].getElementsByTagName("input")[0].checked)//选中
{
if(!opener.hasAdd(row.cells[0].innerHTML))///
{
opener.AddItem(row.cells[0].innerHTML,row.cells[1].innerHTML,row.cells[2].innerHTML,row.cells[3].innerHTML);///========
totalMoney+=parseFloat(row.cells[3].innerHTML);
}
}
}
if(totalMoney>0) opener.SetTotalMoney(totalMoney);//============
self.close();
}
</script>
  • 打赏
  • 举报
回复
你真有耐心等
你就慢慢等吧
hk207 2008-03-13
  • 打赏
  • 举报
回复
呵呵……谢谢showbo啦,比较不错,就差一点小问题,就是:比如第一次我点击选择学生,在子窗口选择001,然后提交,当我第二次点击选择学生,在子窗口再选择001,提交后能不能在父窗口只显示一个001呢?

现在的是重复的!
  • 打赏
  • 举报
回复
看看满足没有
fu.htm
<table width="100%" border="1" align="center" cellpadding="0" cellspacing="0"> 
<tr>
<td align="center" height="27"> 学号 </td>
<td align="center"> 姓名 </td>
<td align="center"> 学科 </td>
<td align="center"> 学费 </td>
</tr>
<tbody id="tbItem"></tbody>
</table> <br /> <br />
<input type="submit" value="选择学生" onclick="window.open('zi.htm','')">
<br />
<br />
总学费:
<input type="text" id="totalMoney" value="">
<script type="text/javascript">
//这个方法是提供给子页面操作该页面的
function AddItem(Num,Name,Subject,Money)
{
var row=document.getElementById("tbItem").insertRow();
var td=row.insertCell();
td.innerHTML=Num;
td=row.insertCell();
td.innerHTML=Name;
td=row.insertCell();
td.innerHTML=Subject;
td=row.insertCell();
td.innerHTML=Money;
}
function SetTotalMoney(TotalMoney)//设置总学费
{
document.getElementById("totalMoney").value=TotalMoney;
}
</script>


zi.htm
<table width="100%" border="1" align="center" cellpadding="0" cellspacing="0" id="subTb"> 
<tr>
<td width="16%" height="27" align="center"> 学号 </td>
<td width="16%" align="center"> 姓名 </td>
<td width="16%" align="center"> 学科 </td>
<td width="16%" align="center"> 学费 </td>
<td width="16%" align="center" onclick="SelAll()"> 选择标志 (全选) </td>
<td width="16%" align="center"> 性别 </td>
</tr>
<tr>
<td align="center" height="27"> 001 </td>
<td align="center"> 张三 </td>
<td align="center"> c# </td>
<td align="center"> 500 </td>
<td align="center"> <input type="checkbox"> </td>
<td align="center"> 男 </td>
</tr>
<tr>
<td align="center" height="27"> 003 </td>
<td align="center"> 李四 </td>
<td align="center"> c++ </td>
<td align="center"> 300 </td>
<td align="center"> <input type="checkbox"> </td>
<td align="center"> 男 </td>
</tr>
<tr>
<td align="center" height="27"> 015 </td>
<td align="center"> 王五 </td>
<td align="center"> java </td>
<td align="center"> 200 </td>
<td align="center"> <input type="checkbox"> </td>
<td align="center"> 女 </td>
</tr>
</table>
<p>
<input type="button" value="提交选择" onclick="AddToParent()"/>
</p>
<script type="text/javascript">
function SelAll()
{
var cb=document.getElementsByTagName("input");
for(var i=0;i<cb.length;i++)
{
if(cb[i].type=='checkbox') cb[i].checked=true;
}
}
function AddToParent()
{
var subTb=document.getElementById("subTb");
var totalMoney=0;
var row;
for(var i=1;i<subTb.rows.length;i++)//注意是从1开始,省略了标题行
{
row=subTb.rows[i];
if(row.cells[4].getElementsByTagName("input")[0].checked)//选中
{
opener.AddItem(row.cells[0].innerHTML,row.cells[1].innerHTML,row.cells[2].innerHTML,row.cells[3].innerHTML);///========
totalMoney+=parseFloat(row.cells[3].innerHTML);
}
}
opener.SetTotalMoney(totalMoney);//============
self.close();
}
</script>
hk207 2008-03-13
  • 打赏
  • 举报
回复
晕!!!
hk207 2008-03-13
  • 打赏
  • 举报
回复
[Quote=引用 53 楼 hk207 的回复:]
太感谢showbo啦!眼泪哗哗的……

同时也感谢chinmo,都是高手啊!!

PS:如果按F5刷新父窗口能不变就Perfect了!!!!
[/Quote]

也就是选择之后按F5刷新,只保留了总学费,如果选择了的行也可以保留就好了!!^_^
hk207 2008-03-13
  • 打赏
  • 举报
回复
[Quote=引用 53 楼 hk207 的回复:]
太感谢showbo啦!眼泪哗哗的……

同时也感谢chinmo,都是高手啊!!

PS:如果按F5刷新父窗口能不变就Perfect了!!!!
[/Quote]

也就是选择之后按F5刷新,只保留了总学费,如果选择了的行也可以保留就好了!!^_^
hk207 2008-03-13
  • 打赏
  • 举报
回复
[Quote=引用 53 楼 hk207 的回复:]
太感谢showbo啦!眼泪哗哗的……

同时也感谢chinmo,都是高手啊!!

PS:如果按F5刷新父窗口能不变就Perfect了!!!!
[/Quote]

也就是选择之后按F5刷新,只保留了总学费,如果选择了的行也可以保留就好了!!^_^
hk207 2008-03-13
  • 打赏
  • 举报
回复
[Quote=引用 53 楼 hk207 的回复:]
太感谢showbo啦!眼泪哗哗的……

同时也感谢chinmo,都是高手啊!!

PS:如果按F5刷新父窗口能不变就Perfect了!!!!
[/Quote]

也就是选择之后按F5刷新,只保留了总学费,如果选择了的行也可以保留就好了!!^_^
hk207 2008-03-13
  • 打赏
  • 举报
回复
[Quote=引用 53 楼 hk207 的回复:]
太感谢showbo啦!眼泪哗哗的……

同时也感谢chinmo,都是高手啊!!

PS:如果按F5刷新父窗口能不变就Perfect了!!!!
[/Quote]

也就是选择之后按F5刷新,只保留了总学费,如果选择了的行也可以保留就好了!!^_^
hk207 2008-03-13
  • 打赏
  • 举报
回复
太感谢showbo啦!眼泪哗哗的……

同时也感谢chinmo,都是高手啊!!

PS:如果按F5刷新父窗口能不变就Perfect了!!!!
  • 打赏
  • 举报
回复
.........
<table width="100%" border="1" align="center" cellpadding="0" cellspacing="0"> 
<tr>
<td align="center" height="27"> 学号 </td>
<td align="center"> 姓名 </td>
<td align="center"> 学科 </td>
<td align="center"> 学费 </td>
</tr>
<tbody id="tbItem"></tbody>
</table> <br /> <br />
<input type="submit" value="选择学生" onclick="window.open('zi.htm','')">
<br />
<br />
总学费:
<input type="text" id="totalMoney" value="0"><!--要给个默认值,为0-->
<script type="text/javascript">
//这个方法是提供给子页面操作该页面的
function AddItem(Num,Name,Subject,Money)
{
var row=document.getElementById("tbItem").insertRow();
var td=row.insertCell();
td.innerHTML=Num;
td=row.insertCell();
td.innerHTML=Name;
td=row.insertCell();
td.innerHTML=Subject;
td=row.insertCell();
td.innerHTML=Money;
}
function ClearAll()
{
var tbItem=document.getElementById("tbItem");
while(tbItem.rows.length>0)
{
tbItem.rows[0].removeNode(true);
}
document.getElementById("totalMoney").value="0";//总学费置0
}
function SetTotalMoney(TotalMoney)//设置总学费
{
document.getElementById("totalMoney").value=TotalMoney+parseFloat(document.getElementById("totalMoney").value);
}
</script>



<table width="100%" border="1" align="center" cellpadding="0" cellspacing="0" id="subTb"> 
<tr>
<td width="16%" height="27" align="center"> 学号 </td>
<td width="16%" align="center"> 姓名 </td>
<td width="16%" align="center"> 学科 </td>
<td width="16%" align="center"> 学费 </td>
<td width="16%" align="center" onclick="SelAll()"> 选择标志 (全选) </td>
<td width="16%" align="center"> 性别 </td>
</tr>
<tr>
<td align="center" height="27"> 001 </td>
<td align="center"> 张三 </td>
<td align="center"> c# </td>
<td align="center"> 500 </td>
<td align="center"> <input type="checkbox"> </td>
<td align="center"> 男 </td>
</tr>
<tr>
<td align="center" height="27"> 003 </td>
<td align="center"> 李四 </td>
<td align="center"> c++ </td>
<td align="center"> 300 </td>
<td align="center"> <input type="checkbox"> </td>
<td align="center"> 男 </td>
</tr>
<tr>
<td align="center" height="27"> 015 </td>
<td align="center"> 王五 </td>
<td align="center"> java </td>
<td align="center"> 200 </td>
<td align="center"> <input type="checkbox"> </td>
<td align="center"> 女 </td>
</tr>
</table>
<p>
<input type="button" value="提交选择" onclick="AddToParent()"/>
</p>
<script type="text/javascript">
function SelAll()
{
var cb=document.getElementsByTagName("input");
for(var i=0;i<cb.length;i++)
{
if(cb[i].type=='checkbox') cb[i].checked=true;
}
}
function AddToParent()
{
var subTb=document.getElementById("subTb");
var totalMoney=0;
var row;
var HasClear=false;
for(var i=1;i<subTb.rows.length;i++)//注意是从1开始,省略了标题行
{
row=subTb.rows[i];
if(row.cells[4].getElementsByTagName("input")[0].checked)//选中
{
if(!HasClear) {opener.ClearAll();HasClear=true;}
opener.AddItem(row.cells[0].innerHTML,row.cells[1].innerHTML,row.cells[2].innerHTML,row.cells[3].innerHTML);
totalMoney+=parseFloat(row.cells[3].innerHTML);
}
}
opener.SetTotalMoney(totalMoney);//============
self.close();
}
</script>
hk207 2008-03-13
  • 打赏
  • 举报
回复
[Quote=引用 42 楼 hk207 的回复:]
呵呵……谢谢showbo啦,比较不错,就差一点小问题,就是:比如第一次我点击选择学生,在子窗口选择001,然后提交,当我第二次点击选择学生,在子窗口再选择001,提交后能不能在父窗口只显示一个001呢?

现在的是重复的!
[/Quote]

可能是我表达不清!还是有一点问题!(偶看了1个多小时啦,还是不知道怎么弄,某些人要说偶懒偶也认命啦!)

偶的意思是每次点击选择学生,在子窗口进行选择,提交后在父窗口显示的只是最近一次提交的选择!比如:第一次我点击选择学生,在子窗口选择001,然后提交,父窗口显示的只有001;当我第二次点击选择学生,在子窗口再选择001、003和015,提交后父窗口显示001、003和015三行;当我第三次点击选择学生,在子窗口再选择003和015,提交后父窗口显示003和015两行。不知道说明白了没有?
hk207 2008-03-13
  • 打赏
  • 举报
回复
[Quote=引用 48 楼 chinmo 的回复:]
实现不了?
笑话

我不想说

如果真的是学程序的人,说到那都会做了!!
而且那方法是做易于理解的
[/Quote]

偶是说偶实现不了,水平有限啊!并不是说你的思路和方法实现不了!!!
hk207 2008-03-13
  • 打赏
  • 举报
回复
看来chinmo是误会啦!偶还真不是学程序的!只是想用JS实现这样的效果而已!!

“不能低估了自己,但是也不能高估了别人!”
  • 打赏
  • 举报
回复
实现不了?
笑话

我不想说

如果真的是学程序的人,说到那都会做了!!
而且那方法是做易于理解的
hk207 2008-03-13
  • 打赏
  • 举报
回复
[Quote=引用 46 楼 chinmo 的回复:]
有一些提问的把他自己当作了爷

以为他给了分别人就必须给他完整的答案

思路和方法对他根本不算什么

对这种人就是懒于理睬
[/Quote]

[Quote=引用 45 楼 chinmo 的回复:]
showbo


你也很有耐心
我告诉他那么详细他都懒得自己去写,自己去学
就想别人给答案

对他没什么好处

为了那点分算什么
来这是为分而来吗??

我只为学思路,学方法而来

所以我也只会给他思路和方法,分析给他

懒得写,那就随便他
[/Quote]

无语……!我有把自己当作爷吗??不懂不会就不能问详细一点?并不是每个人水平都跟你一样高的,要不还会有人在这里提问吗?按照你的思路和方法我实现不了,难道这就说明我懒了?
某些人应该学一下showbo啊!!!……
  • 打赏
  • 举报
回复
不会就去看看JS的split
加载更多回复(38)

87,997

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧