日期:2014-05-18  浏览次数:20690 次

两个不同页面之间的HMTL组件如何交互?
问题描述如下:
在RealSend.jsp页面,通过以下语句开个小窗口

<td   align= "center "   width= "95 "   height= "27 "  
onClick= "javascript:open( 'ContactServlet ', 'test ', 'height=500,   width=310,scrollbars=yes ') "  
style= "cursor:hand;font-size:12px; "> CantactList </td>

这里呼叫了一个servlet,,然后在servlet中通过如下语句:
response.sendRedirect( "/sms/sendmessage/contact.jsp ");

转发到新的页面:contact.jsp

在contact.jsp中,生成了一个javascript的树状结构,点击树的叶子节点
会将此叶子节点代表的值添加到RealSend.jsp中的一个TextArea中,通过以下js函数实现:

function   ToggleAll()   {
    if(document.Contact.selectAll.checked)   {
        var   i   =0;
        while   (i   <   document.Contact.elements.length)     {
    opener.document.RealSend.contactList.value   +=   document.Contact.elements[i].value   +   ", ";
    opene+r.document.RealSend.contactList.value   =   (opener.document.RealSend.contactList.value).replace( ",, ",   ", ");    
    document.Contact.elements[i].checked=1;
    i++;
        }
    }   else   {
        var   i   =0;
        while   (i   <   document.Contact.elements.length)     {
            opener.document.RealSend.contactList.value   =   (opener.document.RealSend.contactList.value).replace(document.Contact.elements[i].value,   " ");
    opener.document.RealSend.contactList.value   =   (opener.document.RealSend.contactList.value).replace( ",, ",   ", ");
            document.Contact.elements[i].checked=0;
    i++;
        }
    }
    chkComma();
}


但是,很郁闷,点击了contact.jsp中的某个叶子节点后,并不会将此叶子节点代表的值添加到RealSend.jsp的TextArea中

我的猜想是:
在servelet中做页面转换的时候,出现了问题,导致这条语句:
opener.document.RealSend.contactList.value   +=   document.Contact.elements[i].value   +   ", ";

不起作用了,也就是说,此处的opener,已经不是RealSend.jsp了

那么,诸位高手,该如何解决此问题呢,谢谢解答!

------解决方案--------------------
改用模态窗口传值看看。