JavaScript 实现弹窗并返回值的两种常用方法

作者:函数茶馆时间:2026-10-25 17:48:08浏览:463

本文详解JavaScript中实现弹窗并返回值的两种常用方法:showModalDialog与window.open。通过对比模式对话框与非模式对话框的特性,结合主窗口与子窗口的代码示例,展示如何传递参数、获取返回值及处理交互逻辑,帮助开发者根据实际需求选择合适的弹窗方案。

1.window.showModalDialog(url,args,dialogattrs)

showModalDialog 模式对话框传值

参数说明:


url:弹出页面地址


agrs:主窗口传给对话框的参数,可以是任意类型(数组也可以)


dialogattrs:弹出窗口的样式参数


模式对话框用法:


主窗口:var value = window.showModalDialog('test.jsp', strs, 'resizable:yes');


弹出框中通过 window.returnValue 来设置返回值,上面的 value 拿到的就是这个值,然后主窗口中可以对


这个值进行处理,实现交互处理


注:模式对话框的应用就在于它的返回值,可以返回简单字符窜,也可以返回数组,非模式对话框类似


2。window.open:

window.open 非模式对话框传值

【父窗口】


代码如下:

 
<script>
function show_child()
{ 
var child=window .open("child.html","child","height=200,width=400,status=yes,toolbar=no,menubar=no,location=no");
/* if(!child.closed)
{ 
if(!window .close())
{ 
var textValue = frm.txt.value; parent.frm0.txt0.value = textValue;
} 
else
{ 
window .close();
child.close();
} 
}*/ 
} 
</script>
<a href="javascript:show_child();">打开子窗口</a>
<form name=frm0>
<input type="text" name="txt0" id="txt0"> //注意这里一定要写ID属性不然FF下取不到值
</form>

【子窗口】


代码如下:

 
<script>
function choseItem()
{ 
var v="";
var check_item = document.frm.item;
for(i=0;i<check_item.length;i++)
{ 
if(check_item[i].checked)
{ 
v+=","+check_item[i].value;
} 
document.frm.txt.value=v.replace(/^,{1}/,"");
} 
} 
function foo()
{ 
window .close();
window .opener.document.getElementById("txt0").value=document.getElementById("txt").value
} 
</script>
<body>
<form name=frm>
<input type=checkbox name=item value=1 onclick="choseItem();">a
<input type=checkbox name=item value=2 onclick="choseItem();">b
<input type=checkbox name=item value=3 onclick="choseItem();">c
<input type=checkbox name=item value=4 onclick="choseItem();">d
<input type=text name="txt" id="txt">
</form>
<input type=button value="关闭" onclick="foo();">
</body>

小结:一般情况下,windows.open因为自定义的比较多,所以用windows.open的较多,上面的很多网页编辑器喜欢用showModalDialog,实在不知道用哪个的的,就用window.open吧,很多成熟的cms系统都是用的window.open.

作者最新文章