关闭子窗口,在父窗口求和的js怎么做啊?附代码!高手来啊!!

hk207 2008-03-04 07:21:28
fu.htm代码:

<a href="#" onclick="window.open('zi1.htm','','status=yes,width=200,height=200')">子窗口1</a><br /><br />
<a href="#" onclick="window.open('zi2.htm','','status=yes,width=200,height=200')">子窗口1</a><br /><br />
<a href="#" onclick="window.open('zi3.htm','','status=yes,width=200,height=200')">子窗口1</a><br /><br />
<input name="he" type="text" readonly="true">he<br />

zi1.htm代码:

<input name="zi1" type="text" readonly="true">zi1<br />

zi2.htm代码:

<input name="zi2" type="text" readonly="true">zi2<br />

zi3.htm代码:

<input name="zi3" type="text" readonly="true">zi3<br />

子窗口是动态生成的,就是不一定只有三个(能解决3个子窗口的也可以!)。


要求的计算是:在zi1中输入一个数a(如:2),则父窗口中显示a(如:2),如果再打开zi2输入b(如:3),则父窗口中显示a+b(如:5),如果再打开zi3输入c(如:4),则父窗口中显示a+b+c(如:9),子窗口中的值可以修改,修改不累加。

高手帮一下啊!拜托!!
...全文
556 55 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
55 条回复
切换为时间正序
请发表友善的回复…
发表回复
cnchart 2008-03-07
  • 打赏
  • 举报
回复
楼主不厚道,如果求和问题解决了,请结贴。

需要提取数字,请再开贴。
  • 打赏
  • 举报
回复
汗!你还是新开一个帖吧
这个先结了
这么长都懒得拉来看了
  • 打赏
  • 举报
回复
你没有规律,提取出来的不符合数组,你一样用不了数组实现啊!
  • 打赏
  • 举报
回复
当然可以取出去数字啊
主要是你命名要符合数组的规律
不然你提取数字出来也没用啊!!
hk207 2008-03-07
  • 打赏
  • 举报
回复
window.opener.znum(document.getElementById("zi1").value,<%=dt1.Rows[0]["ProdNo"].ToString()%>);

其中“<%=dt1.Rows[0]["Prodid"].ToString()%>”是从数据库取出来的数字和字母混合的字符串,现在想问的是怎么样才可以把“<%=dt1.Rows[0]["Prodid"].ToString()%>”中的数字提取出来!

高手再来教教偶啊!拜托!!
hk207 2008-03-07
  • 打赏
  • 举报
回复
[Quote=引用 48 楼 chinmo 的回复:]
ID与他无关啊
动态生成与他没关系
你的 ID为什么要用这个来做呢???
换一些方便的不好?
比如a0
a1这样的话你取出来也方便
也容易得到当前有几个窗口
而且也有也正好符合数组下标的要求
[/Quote]

晕了!

ID早就定了的啦,这时要改?!唉……

我只是想,如果可以把他的数字提取出来,放到“0”那个位置不就ok啦!

现在问题是,单独的话可以把数字提取出来,放到“window.opener.znum(document.getElementById("zi1").value,0); ”这里面的话就不行了,怎么办呢??
xuhe2003 2008-03-07
  • 打赏
  • 举报
回复
都不错,方法很多
  • 打赏
  • 举报
回复
ID与他无关啊
动态生成与他没关系
你的 ID为什么要用这个来做呢???
换一些方便的不好?
比如a0
a1这样的话你取出来也方便
也容易得到当前有几个窗口
而且也有也正好符合数组下标的要求
hk207 2008-03-06
  • 打赏
  • 举报
回复
这一串“342hj-dsh3w-djw3e-df212”不是43楼说的序列号,其实就是input的id,也是动态生成的!
hk207 2008-03-06
  • 打赏
  • 举报
回复
[Quote=引用 45 楼 chinmo 的回复:]
数组的下标是数字型的
你改为非数字肯定要出错了,那里的0代表的数组下标
[/Quote]

因为是动态生成的啊,只有这么一个参数(不好确定一共有几个子窗口,只有这个参数是相异的),可以提取这一串“342hj-dsh3w-djw3e-df212”中的数字吗?

具体怎么做呢?怎么我提取出来做的都不行(在一个页面上可以提取出来!)!郁闷……啊……
  • 打赏
  • 举报
回复
数组的下标是数字型的
你改为非数字肯定要出错了,那里的0代表的数组下标
  • 打赏
  • 举报
回复
window.opener.znum(document.getElementById("zi1").value,0);
你是说后面的那个0?
这个肯定不行的,这个0代表的是数组
<script> 
var aa=[0,0,0]

function znum(n,i){
var result = document.getElementById("he");
var number = parseInt(n);
if(aa[i] != number){ //子窗口值改变
if(result.value==""){
result.value=number;
}
else{
result.value=parseInt(result.value)-parseInt(aa[i]) + number;
}
aa[i] = number;
}
}
</script>

仔细看这部分

参数i是作为数组里用的,如果你不是数字形式那肯定会出错啊!
  • 打赏
  • 举报
回复
大哥,你求和,还要加上字母和符号你能求和吗?
比如和会是“NaN”
这个是因为没做判断完啊
对一些非法赋值没过滤
342hj-dsh3w-djw3e-df212
你这个是一个序列号形式怎么可能求和啊?
hk207 2008-03-06
  • 打赏
  • 举报
回复
[Quote=引用 40 楼 chinmo 的回复:]
就用我的那个
我的那个就是为动态生成准备的!
稍微改下旧可以了
[/Quote]

想再问一下,如果我想把“<script language="javascript">
function xs(){
window.opener.znum(document.getElementById("zi1").value,0);
window.close();
}
</script>”中的“value,0”中的数字“0”换成别的比如这样“342hj-dsh3w-djw3e-df212”的可以吧?该怎么改呢??还有就是计算有时候会出错,比如和会是“NaN”??

hk207 2008-03-05
  • 打赏
  • 举报
回复
[Quote=引用 28 楼 cnchart 的回复:]
这破问题还没解决啊。

修改了一下,应该是楼主的意思
t1.htm

HTML code<input name="zi1" type="text" onblur="add()"/>
<input name="m" type="text" value="" type="hidden" />
<input name="m2" type="text" value="" type="hidden" />
<br />
<br />

<script language="javascript">
document.all['m'].value=window.opener.document.all['he1'].value;
if(document.all['m'].value==''){

[/Quote]


还是差一点点!!高手就是高手啊!!!

就是同一个子窗口关闭后再打开修改还是会累加啊!!我要的是同一个子窗口修改值不累加,关闭后再打开修改还是不累加(比如我打开zi1,输入1后关闭,父窗口值为1,再打开zi2输入2,关闭,父窗口值为3,这时候我再打开zi1,输入3,父窗口的值应该是zi2+zi1=5,而不是原父窗口的值3+zi1=6啊),简单说就是父窗口的值始终等于各子窗口的值之和,只不过子窗口的值可以修改!!

汗啊!!不知我这回说的够明白了没有啊?

拜托高手来吧!!
cnchart 2008-03-05
  • 打赏
  • 举报
回复
这破问题还没解决啊。

修改了一下,应该是楼主的意思
t1.htm
<input name="zi1" type="text"  onblur="add()"/>
<input name="m" type="text" value="" type="hidden" />
<input name="m2" type="text" value="" type="hidden" />
<br />
<br />

<script language="javascript">
document.all['m'].value=window.opener.document.all['he1'].value;
if(document.all['m'].value==''){
document.all['m2'].value=true; //表示第一次输入
}
else{
document.all['m2'].value=false;
}

function add(){
if(document.all['m2'].value=='true'){
window.opener.document.all['he1'].value=document.all['zi1'].value;
}
else{
window.opener.document.all['he1'].value=parseInt(document.all['zi1'].value)+parseInt(document.all['m'].value);
}
}
</script>
hk207 2008-03-05
  • 打赏
  • 举报
回复
[Quote=引用 24 楼 chinmo 的回复:]
你要修改时不累加???
[/Quote]


是的,修改时把修改前的值减掉再加上修改后的值。
hk207 2008-03-05
  • 打赏
  • 举报
回复
[Quote=引用 22 楼 lsc1202001 的回复:]
晕 改下

HTML code
<script>
var zi = [0,0,0,0];
function add(n, o){
var result = document.all["he"];
var number = parseInt(n);
if(zi[o] != number){ //子窗口值改变
result.value=(result.value==""?0:parseInt(result.value)) -zi[o] + number;
zi[o] = number;
}
}
</script>
<a href="#" onclick="window.open('z1.html','','status=yes,width=200,height=200')"> …
[/Quote]


只适用一个子窗口,子窗口之间不相加啊!我要的是3个子窗口的值相加的和填到父窗口啊!
hk207 2008-03-05
  • 打赏
  • 举报
回复
[Quote=引用 20 楼 cnchart 的回复:]
楼主的意思是不是这样:

test.htm

HTML code<script>
function add(n){
var result = document.all["he1"];
result.value=(result.value==""?0:parseInt(result.value))+parseInt(n);
}
</script>
<a href="#" onclick="window.open('t1.htm','','status=yes,width=200,height=200')"> 子窗口1 </a> <br /> <br />
<a href="#" onclick="window.open('t2.htm','','status=yes,width=200,height=200')"> …
[/Quote]


高手!!!差不多就是这个意思!只不过第一次修改的时候还是会累加啊!!
  • 打赏
  • 举报
回复
你要修改时不累加???
加载更多回复(35)

87,996

社区成员

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

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