iframe中访问父帧中的下拉框,出现错误,请问代码哪里有问题?

elsiedu 2003-09-09 09:41:03
我的页面结构如下:
<!--#include file ="identify.asp"-->
<%orderid=Request.QueryString("orderid")
s1="orderlink.asp?orderid=" & orderid
%>
<html>
<frameset rows="100%,0%,0%" border="0" frameborder="0">
<frame src=<%=s1%> name="mdl" scrolling=auto noresize >
<frame src="order2.asp" name="btm" scrolling=no noresize>
<frame src="blank.asp" name="unsee" noresize scrolling=no>
</frameset>
</html>

在orderlink.asp中有一个<iframe name="ifp" src="ifp.asp" width="0" height="0" marginwidth="0" marginheight="0" frameborder="0" scrolling=no></iframe>

下面是ifp.asp的代码
<%@ Language=VBScript %>
<HTML>
<HEAD>
<META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0">
</HEAD>
<BODY>
<%set link=server.CreateObject ("adodb.connection")
link.Open "dsn=data","dujuan","dj1001"
set rsi=server.CreateObject ("adodb.recordset")
dpt=request("sele")
if Request("bgl")="05" then
fdt=Request("fjyb")
sqli="select sonpartyid,parentpartyid,partydes,partyid,deptid,abbr from partyrelation,party where sonpartyid=partyid and deptid='"& dpt & "' and parentpartyid='" & fdt & "' order by abbr,partydes"
rsi.Open sqli,link,3,3
else
fdt=Request("bgl")
sqli="select * from party where (deptid='00' or deptid='" & dpt & "') and partytypeid='" & fdt & "' order by abbr,partydes asc"
rsi.Open sqli,link,3,3
end if
num=rsi.RecordCount
idx=1
Response.Write("<script language='javascript'>")
while not rsi.EOF
%>
parent.frames.document.all.sml.length=<%=idx+1%>;//sml为orderlink.asp中的一个下拉框。
parent.frames.document.all.sml.options[<%=idx%>]=new Option('<%=rsi(5)&"_"&rsi(2)%>','<%=rsi(2)%>');
<%
idx=idx+1
rsi.MoveNext
wend
Response.Write("</script>")%>
</BODY>
</HTML>
现在访问页面的时候总是报错,错误为“parent.frames.document.all.sml”为空或不是对象。请问代码应该怎么写?
...全文
33 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
那段英文的意思应该是:
为了提高性能(如果也为了避免版本出问题?),尽量使用SELECT BOX所在帧的new变量来代替跨帧的new变量。
如:你要在frame1里用脚本填充frame2里的select box,请在frame1里的脚本new时,将new返回的结果存入frame2的变量,而非frame1的变量!
elsiedu 2003-09-11
  • 打赏
  • 举报
回复
照楼上各位的指导改了,还是没有解决
zhangking 2003-09-10
  • 打赏
  • 举报
回复
parent.frames.document.all.sml ==>
parent.frames.sml
elsiedu 2003-09-10
  • 打赏
  • 举报
回复
我把中间那段脚本改成了下面这个样子,但是仍然是在我的机子上可以用,而别人的机子上就没有下拉选项显示,而且总是报错“aSelect.options[<%=idx%>]=ownerWnd.newOption;这行缺少对象”,我用alert(parent.document.all("sml"));返回值也是NULL,应该怎么写呢?

aSelect = parent.document.all("sml");
var ownerWnd = document.parentWindow;
ownerWnd.newOption = new Option('<%=rsi(5)&"_"&rsi(2)%>','<%=rsi(2)%>');
aSelect.options[<%=idx%>]=ownerWnd.newOption;
KUMOZAKI 2003-09-10
  • 打赏
  • 举报
回复
http://www.csdn.net/develop/Read_Article.asp?Id=18910

微软说用一个selectbox代替一个frame,在里面放一个option,是不是这样?
bananasmiling 2003-09-10
  • 打赏
  • 举报
回复
<script>
function addOption(aSelect, optionId, optionName) {
ownerWindow = aSelect.document.parentWindow;
ownerWindow.newOption = new Option(optionName, optionId);
aSelect.options[aSelect.options.length] = ownerWindow.newOption;
}

function crossFrameAddOption() {
var aSelect = parent.otherFrameName.document.forms[0].theSelectName;
addOption(aSelect , "id"+ aSelect.options.length, "name"+ aSelect.options.length);
}
</script>
<input type="button" onClick="crossFrameAddOption();" value="test">

elsiedu 2003-09-10
  • 打赏
  • 举报
回复
为什么我用parent.document.all("sml")的时候,总是报错说“缺少对象”,用alert(parent.document.all("sml"));返回值也是NULL,应该怎么写呢?
Brookes 2003-09-09
  • 打赏
  • 举报
回复
parent.frames是一个集合,必须指定
parent.frames("frameName")
zanpo 2003-09-09
  • 打赏
  • 举报
回复
写错了,不好意思

parent.frames("mdl").document.all("sml")
zanpo 2003-09-09
  • 打赏
  • 举报
回复
parent.frames("Hide").document.all("sml")

你再试试
fason 2003-09-09
  • 打赏
  • 举报
回复
http://www.csdn.net/develop/Read_Article.asp?Id=18910
tripofdream 2003-09-09
  • 打赏
  • 举报
回复
既然是父帧,parent.document.all("sml")就可以了
elsiedu 2003-09-09
  • 打赏
  • 举报
回复
照楼上两位的意见改了,结果下拉框都没有选项了,原来的程序在几台机子上都没问题,但有些机子就报错,是不是跟IE有关呢?

28,390

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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