如何传值???
问:如何将test.html中任意框中输入的值在按下回车键后,传到testnew.html的任意框中去???
test.html
<HTML><BODY>
<input type="text" id="txt" size=20 onkeydown="if(event.keyCode==13) opensend()">
<input type="text" id="txt1" size=20>
<script>
function opensend()
{
x = showModalDialog("testnew.html");
event.srcElement.value = x[0];
event.srcElement.parentNode.parentNode.children[2].firstChild.value = x[1];
}
</script>
</BODY></HTML>
IE报错:
错误:'x.0'不是对象
testnew.html
<HTML><BODY>
<input type="text" name="dlgtxt">
<input type="text" name="dlgtxt1">
<button onclick="doSomething()">do somthing</button>
<script>
function doSomething(){
returnValue = [dlgtxt.value,dlgtxt1.value]
close();
}
</script>
</BODY></HTML>
问题点数:20、回复次数:21Top
1 楼net_lover(【孟子E章】)回复于 2002-10-06 19:17:47 得分 0
test.html
<HTML><BODY>
<input type="text" id="txt" size=20 onkeydown="if(event.keyCode==13) opensend()">
<input type="text" id="txt1" size=20>
<script>
function opensend()
{
x = showModalDialog("testnew.html");
event.srcElement.value = x[0];
event.srcElement.parentNode.parentNode.children[2].firstChild.value = x[1];
}
</script>
</BODY></HTML>
testnew.html
<HTML><BODY>
<input type="text" name="dlgtxt">
<input type="text" name="dlgtxt1">
<button onclick="doSomething()">do somthing</button>
<script>
function doSomething(){
window.returnValue = [dlgtxt.value,dlgtxt1.value]
close();
}
</script>
</BODY></HTML>
Top
2 楼net_lover(【孟子E章】)回复于 2002-10-06 19:21:19 得分 0
test.html
<HTML><BODY>
<input type="text" id="txt" size=20 onkeydown="if(event.keyCode==13) opensend()">
<input type="text" id="txt1" size=20>
<script>
function opensend()
{
x = showModalDialog("testnew.html");
event.srcElement.value = x[0];
txt1.value = x[1];
}
</script>
</BODY></HTML>
event.srcElement.parentNode.parentNode.children[2].firstChild.value是谁啊Top
3 楼lhdjk(耗子)回复于 2002-10-06 20:54:08 得分 0
孟老师:
csdn上边有srcElement
parentNode等的详细介绍没有??Top
4 楼lhdjk(耗子)回复于 2002-10-06 21:04:32 得分 0
孟老师:
到底您哪一楼的回复才是正确的传递呀?
两篇都试了,还是报错,还是不能传到用showModalDialog打开的窗口中去Top
5 楼emu(月亮不在手指尖上)回复于 2002-10-06 21:09:00 得分 0
孟子:我原来以为他的返回值要依次放在第二个和第三个单元格中的input框里面,所以才有了“event.srcElement.parentNode.parentNode.children[2].firstChild.value”,没想到你都看迷糊了呵呵。
lhdjk (耗子) :看看这个你就知道为什么我要搞那么多parentNode和children了。
<HTML><BODY>
<table>
<tr>
<td>
<input type="text" id="txt" size=20 onkeydown="if(event.keyCode==13) opensend()">
</td>
<td>
<input type="text" id="txt1" size=20>
</td>
</tr>
<tr>
<td>
<input type="text" id="txt" size=20 onkeydown="if(event.keyCode==13) opensend()">
</td>
<td>
<input type="text" id="txt1" size=20>
</td>
</tr>
</table>
<script>
function opensend()
{
x = showModalDialog("testnew.html");
event.srcElement.value = x[0];
event.srcElement.parentNode.parentNode.children[1].firstChild.value = x[1];
}
</script>
</BODY></HTML>
Top
6 楼emu(月亮不在手指尖上)回复于 2002-10-06 21:14:15 得分 0
lhdjk(耗子) :孟子的第二篇明明是对的啊,在我这里没有问题。Top
7 楼lhdjk(耗子)回复于 2002-10-06 21:18:30 得分 0
emu(ston) 哥:
您告诉孟老师的,其实正是我想要做的,因为您一直在开发我的智力,孟老师他可能是不明白我真正想要什么。
我之所以在上文中只用了一个横行,是因为我想一步步的搞过来。
不过您楼上的这段,我试了一下,依然没有将test.html中我在任意框中输入的一个值传到用showModalDialog打开的窗口中的任何<input>中去呀!Top
8 楼lhdjk(耗子)回复于 2002-10-06 21:27:32 得分 0
emu(ston)哥,孟老师:
老二篇在我这里依然传不过去,我用的是IE6 。
Top
9 楼emu(月亮不在手指尖上)回复于 2002-10-06 21:35:41 得分 0
我试了又试,没有问题啊。
即使你那边有问题,可以一步一步调试的嘛。在两个文件中的javascript里面隔一行就alert一下,准能找到在哪行出了问题。
你前面提到的“错误:'x.0'不是对象”是由于你没有点“do somthing”按钮就直接关闭了页面造成的。可以在主页面里面判断:
-----------------------------------------------------
<HTML><BODY>
<table>
<tr>
<td>
<input type="text" id="txt" size=20 onkeydown="if(event.keyCode==13) opensend()">
</td>
<td>
<input type="text" id="txt1" size=20>
</td>
</tr>
<tr>
<td>
<input type="text" id="txt" size=20 onkeydown="if(event.keyCode==13) opensend()">
</td>
<td>
<input type="text" id="txt1" size=20>
</td>
</tr>
</table>
<script>
function opensend()
{
x = showModalDialog("testnew.html");
if (x==null) return
event.srcElement.value = x[0];
event.srcElement.parentNode.parentNode.children[1].firstChild.value = x[1];
}
</script>
</BODY></HTML>
-----------------------------------------------------Top
10 楼emu(月亮不在手指尖上)回复于 2002-10-06 21:36:56 得分 0
你是不是老是直接关闭testnew啊?要点“do something”按钮啊!Top
11 楼lhdjk(耗子)回复于 2002-10-06 21:49:17 得分 0
emu(ston)哥:
是的,点了do something按钮后,是能回写的!但是:
我估计您与孟老师是不是都把我的意思搞错了呀,
我再解释一下:
比如我先将test.html这个页面放在桌面上,双击后打开,这时我在其中任意一个<input>中输入任意字符,然后在任意一个<input>框中按下回车键,之后才调用opensend()函数打开一个窗口(窗口中显示的页面是:testnew.html)
需求:需求:需求:
这新开窗口中的<input name="dlgtxt"><input name="dlgtxt1">其中一个框中要显示出我在test.html中输入的那个值!
就象:window.open('testnew.html?'+this.value)
语言表达能力有限,不知您二位了解了我的意思没有Top
12 楼emu(月亮不在手指尖上)回复于 2002-10-06 21:55:42 得分 0
你就不能自己先想想办法,查查书?
算了,再给你做一次。Top
13 楼emu(月亮不在手指尖上)回复于 2002-10-06 22:05:44 得分 0
test.html
------------------------------------------------------------
<HTML><BODY>
<table>
<tr>
<td>
<input type="text" id="txt" size=20 onkeydown="if(event.keyCode==13) opensend()">
</td>
<td>
<input type="text" id="txt1" size=20>
</td>
</tr>
<tr>
<td>
<input type="text" id="txt" size=20 onkeydown="if(event.keyCode==13) opensend()">
</td>
<td>
<input type="text" id="txt1" size=20>
</td>
</tr>
</table>
<script>
function opensend()
{
var elm = event.srcElement.parentNode.parentNode; //取得所在行的tr对象
var elmArray = [elm.children[0].firstChild,elm.children[1].firstChild] ;
// 取得要修改的两个输入框,构成一个数组(因为ModalDialog只接收一个参数对象)
x = showModalDialog("testnew.html",elmArray);
if (x==null) return
elmArray[0].value=x[0];
elmArray[1].value=x[1];
}
</script>
</BODY></HTML>
------------------------------------------------------------
testnew.html
------------------------------------------------------------
<HTML><BODY onload="getValues()">
<input type="text" name="dlgtxt">
<input type="text" name="dlgtxt1">
<button onclick="doSomething()">do somthing</button>
<script>
function getValues()
{
dlgtxt.value=dialogArguments[0].value
dlgtxt1.value=dialogArguments[1].value
}
function doSomething(){
returnValue = [dlgtxt.value,dlgtxt1.value]
close();
}
</script>
</BODY></HTML>
------------------------------------------------------------
Top
14 楼emu(月亮不在手指尖上)回复于 2002-10-06 22:10:38 得分 0
lhdjk(耗子):你找几本好点的手册和在线教程,遇到问题自己多动动手吧。国庆过了,我也不能再这么常来了。Top
15 楼lhdjk(耗子)回复于 2002-10-06 22:25:08 得分 0
是!Top
16 楼net_lover(【孟子E章】)回复于 2002-10-06 22:57:28 得分 0
第2个是对的。
要进行传递到input里,不必要用childNode等,再说,也是容易出错的Top
17 楼emu(月亮不在手指尖上)回复于 2002-10-06 23:10:30 得分 0
嗯?
不用childNode那用什么呢?
孟子再提示一下?Top
18 楼net_lover(【孟子E章】)回复于 2002-10-06 23:29:52 得分 0
document.formName.inputName.value=x[1]Top
19 楼emu(月亮不在手指尖上)回复于 2002-10-06 23:34:57 得分 0
这个我也知道,可是他要动态生成多行啊,要用name就要带下标,处理下标就比较麻烦了。Top
20 楼lhdjk(耗子)回复于 2002-10-07 00:07:16 得分 0
tmptr.children[1].innerHTML = "<input size=6 name=yhb onkeydown='if (event.keyCode==13) opensend();resizeInput()' onchange='resizeInput()' onkeyup='removeRow()'>"
为什么出了回车键跳出新窗口,其它键都等于了Tab键了呢?Top
21 楼emu(月亮不在手指尖上)回复于 2002-10-07 00:51:53 得分 20
因为你没有用大括号把两个语句合并成一个复合语句啊:
tmptr.children[1].innerHTML = "<input size=6 name=yhb onkeydown='if (event.keyCode==13) {opensend();resizeInput();}' onchange='resizeInput()' onkeyup='removeRow()'>"Top




