关于对象为空的问题,头疼啊!

mingjunr 2004-11-03 10:30:14
老是报对象为空的错,我简单帖一下代码,希望高手帮帮忙,谢谢!

第一个页:say.aspx(无后台代码)
-------
<script language=javascript>
function chkMsg()
{
saymessage.location.href="chat.aspx";
loadmessage.location.href="chat2.aspx";
}
setInterval("chkMsg()",20000);
</script>
</HEAD>
----------
<tr>
<td valign="top" align="middle" class="borderon"><iframe src="chatmsg.aspx" name="main" width="100%" height="100%" scrolling=no></iframe>
</td>
</tr>
<tr>
<form name="form1" method="post" target="saymessage" onkeydown="if(event.keyCode==13 )form1.s.click();">
<td height="10" class="borderon">你对 <input type="hidden" name="mTo"> <input type="text" name="mName" size="6" readonly><input type="text" name="mMessage" size="28"> <input type="button" name="s" value="发言" onclick="formsubmit();" class="button2">
</td>
</form>
</tr>
----------
<iframe name="saymessage" src="chat.aspx" width="0" height="0"></iframe>
<iframe name="loadmessage" src="chat2.aspx" width="0" height="0"></iframe>

-----------
第二个页:chat.aspx(与chat2.aspx基本相同)

HTML部分:
<script>
parent.main.scrollTo(0,( parent.main.document.body.scrollHeight-parent.main.document.body.clientHeight)); //@&$这个地方报错:parent.main为空或不是对象
</script>
</HEAD>
<body MS_POSITIONING="GridLayout" bgcolor="#9999cc" text="#000000">
//这部分没有任何代码
</body>

代码部分:(page_load)
-----
Response.Write("<script language=javascript>parent.main.out2('"+dr["User_Name"].ToString().Trim()+"','"+dr["mDate"].ToString().Trim()+"','"+dr["mMsg"].ToString().Trim()+"');</script>");//这一部分能写上,有点奇怪

...全文
142 14 打赏 收藏 举报
写回复
14 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
JK_10000 2004-11-03
  • 打赏
  • 举报
回复
加个defer再试试吧。

<script language=javascript defer=true>
function chkMsg()
{
saymessage.location.href="chat.aspx";
loadmessage.location.href="chat2.aspx";
}
setInterval("chkMsg()",20000);
</script>
JK_10000 2004-11-03
  • 打赏
  • 举报
回复
setInterval("chkMsg()",20000);

--->>>

setTimeout("chkMsg()",20000);
mingjunr 2004-11-03
  • 打赏
  • 举报
回复
奇怪的是好像并没有延时20秒,一打开就立刻报原来那个错误
yaohai 2004-11-03
  • 打赏
  • 举报
回复
晕,这么长的代码,帮顶算了~
JK_10000 2004-11-03
  • 打赏
  • 举报
回复
<iframe name="saymessage" src="chat.aspx" width="0" height="0"></iframe>

先把以上这句改成以下
<iframe name="saymessage" src="about:blank" width="0" height="0"></iframe>

运行一下,二十秒后(执行延时函数后)看看是否还报错。


mingjunr 2004-11-03
  • 打赏
  • 举报
回复
<%@ Page language="c#" Codebehind="say.aspx.cs" AutoEventWireup="false" Inherits="UserMgr.say" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
<HEAD>
<title>say</title>
<meta name="GENERATOR" Content="Microsoft Visual Studio 7.0">
<meta name="CODE_LANGUAGE" Content="C#">
<meta name="vs_defaultClientScript" content="JavaScript">
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=gb2312">
<link rel="stylesheet" href="inc/style.css" type="text/css">
<script>

function formsubmit(){
if (document.form1.mName.value==""){
alert("你想对谁说话?");
}else{
if(document.form1.mMessage.value=="")
{
alert("你想说什么?");
}else{
document.form1.action = "chat.aspx";
form1.submit();
document.form1.mMessage.value="";
document.form1.mMessage.focus();
}
}
}
function chkMsg(){
saymessage.location.href="chat.aspx";
loadmessage.location.href="chat2.aspx";
}
setInterval("chkMsg()",20000);

</script>

</HEAD>
<body MS_POSITIONING="GridLayout" bgcolor="#ffffff" text="#000000" oncontextmenu="return false" leftmargin="0" topmargin="0">

<table width="100%" border="0" cellspacing="0" cellpadding="0" height="100%" align="center">
<tr>
<td valign="center" class="borderon" height="30">MSG即时信息发送系统地籍信息系统中的一个重要组成部分。你可以用它和任何办公成员发送或留言即时消息。</td>
</tr>
<tr>
<td valign="top" align="middle" class="borderon"><iframe src="chatmsg.aspx" id="main" name="main" width="100%" height="100%" scrolling=no></iframe>
</td>
</tr>
<tr>
<form name="form1" method="post" target="saymessage" onkeydown="if(event.keyCode==13 )form1.s.click();">

<td height="10" class="borderon">
你对 <input type="hidden" name="mTo"> <input type="text" name="mName" size="6" readonly>
<input type="text" name="mMessage" size="28"> <input type="button" name="s" value="发言" onclick="formsubmit();" class="button2">
</td>
</form>
</tr>
<tr>
<td height="10" align="right" disabled class="borderon">软件开发:北京地星伟业科技有限公司
  </td>
</tr>
</table>
<iframe name="saymessage" src="chat.aspx" width="0" height="0"></iframe>
<iframe name="loadmessage" src="chat2.aspx" width="0" height="0"></iframe>

</body>
</HTML>
ice_berg16 2004-11-03
  • 打赏
  • 举报
回复
把控制滚动的部分放到chatmsg.aspx中
JK_10000 2004-11-03
  • 打赏
  • 举报
回复
把say.aspx的全部代码贴出来看看
mingjunr 2004-11-03
  • 打赏
  • 举报
回复
那句话不过是控制滚动条的功能,假如能让滚动条始终保持在最底端,就不用这么麻烦了!怎么写代码,如果<iframe>有这个属性更好?
mingjunr 2004-11-03
  • 打赏
  • 举报
回复
楼上两位,谢谢,错误依旧!头大,
micker 2004-11-03
  • 打赏
  • 举报
回复
你的位置没有摆对,要放在form之下啊,否则在你执行函数的时候,form都还没有的啊。
你把js代码的放在form表单之下就ok了!
ttyp 2004-11-03
  • 打赏
  • 举报
回复
try
parent.frames["main"]

iframe的name,id都加上看看
mingjunr 2004-11-03
  • 打赏
  • 举报
回复
大家不要嫌看着累哈
还有一个页面:chatmsg.aspx(无后台代码)
<script>
function out2(mfrom,mtime,mword)
{
Mstr=document.all.temp.value;
document.all.temp.value=Mstr + "<font color=#FF0000>"+mfrom+"</font>对你说:<br>  <font color=#0000FF>"+mword+"</font><font color=#666666> ["+mtime+"]</font><br>";
document.all.message.innerHTML=parent.main.temp.value;
}
function out(mto,mtime,mword)
{
Mstr=document.all.temp.value;
document.all.temp.value=Mstr + "你对<font color=#0000FF>"+mto+"</font>说:<br>  <font color=#0000FF>"+mword+"</font><font color=#666666> ["+mtime+"]</font><br>";
document.all.message.innerHTML=parent.main.temp.value;
}
</script>
</HEAD>
<body MS_POSITIONING="GridLayout">
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td id="message" >  </td></tr>
</table>
<input type="hidden" name="temp" >
mingjunr 2004-11-03
  • 打赏
  • 举报
回复
问题解决,谢谢各位朋友,呵呵,问题不在这个页里,在say.asx里的父窗体里有一个代码调用了chat.aspx,那个时候还没有say.aspx,我真是蠢,惭愧啊!,呵呵
相关推荐
发帖
JavaScript

8.7w+

社区成员

Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
帖子事件
创建了帖子
2004-11-03 10:30
社区公告
暂无公告