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

通过button更新iframe的内容问题
通过如下javascript
<script   language= "javascript ">
function   getUrl()
{
var   hdncid=document.getElementById( "hdncid ");
cid=hdncid.value;
var   hdnmode=document.getElementById( "hdnmode ");
mode=hdnmode.value;
var   hdnsid=document.getElementById( "hdnsid ");
sid=hdnsid.value;
var   yobj=document.getElementById( "sy ");
y=yobj.value;
var   mobj=document.getElementById( "sm ");
var   idx=mobj.selectedIndex;
m=mobj.options(idx).value;
var   bdobj=document.getElementById( "bsd ");
idx=bdobj.selectedIndex;
bd=bdobj.options(idx).value;
var   edobj=document.getElementById( "esd ");
idx=edobj.selectedIndex;
ed=edobj.options(idx).value;
var   bsh=document.getElementById( "bsh ");
h1=bsh.value;
var   esh=document.getElementById( "esh ");
h2=esh.value;

var   frm=document.getElementById( "ifrmfivreport ");
frm.src= "fivreport.aspx?mode= "+mode+ "&id= "+cid+ "&sid= "+sid+ "&d= "+y+ "- "+m+ "- "+bd+ "   "+h1+ "> "+ed+ "   "+h2;
alert(frm.src);//奇怪的地方
}
button如下:
<input   type= "button "   id= "refBtn "   value= "生成报表 "   class= "Button1 "   onclick= "getUrl();ifrmfivreport.location.reload(true); ">
上面代码的目的是按按钮时,先取得页面上一些域的值,来构造iframe(这里其ID为ifrmfivreport)的src所指向的页面的QueryString,然后通过iframe.location.reload来显示根据新的条件查询到的页面。
现象:
在上面getUrl函数的最后的alert(frm.src),如果有该句,则按按钮后,iframe内显示的结果就是根据页面上的域的值而查询到的结果,如果没有该句,按按钮后,iframe内始终显示的是页面第一次加载时的结果,而页面域的值没起作用,也就是QueryString还是第一次的字符串。
请弟兄们帮忙看看!

------解决方案--------------------
frm.location= "fivreport.aspx?mode= "+mode+ "&id= "+cid+ "&sid= "+sid+ "&d= "+y+ "- "+m+ "- "+bd+ " "+h1+ "> "+ed+ " "+h2;
试试
------解决方案--------------------
ifrmfivreport.location.reload(true)这句可以去掉吧

ifrmfivreport.src=xxx就可以重载页面了

alert原因是不是同步的问题?就是ifrmfivreport.src=xxx没执行完就reload了