| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1900 人关注过本帖
标题:function调用出错---function结果不能再赋值?
只看楼主 加入收藏
towering
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:1
帖 子:261
专家分:507
注 册:2007-10-9
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:11 
function调用出错---function结果不能再赋值?
<!--#include file="Conn.asp"-->
<html>
<head>
<title>无标题文档</title>
</head>
<body>
<%
function HotNews(num)
 sql="select top "&num&" id, Title,filepath,filename from OfficeNews order by hits,id ASC"
 set rs=Server.CreateObject("ADODB.Recordset")
  rs.open sql,conn,1,1
 Response.Write("<ul>")
  If rs.eof and rs.bof then
   Response.Write("当前没有文章,请添加!")
  else do while not rs.eof
  filepath=rs("filepath")&rs("filename")
         Response.Write("<li><a href='show.asp?id="&rs("id")&"' target='_blank' title='"&rs("title")&"'>")
    Response.Write(left(rs("Title"),16))
     If Len(rs("title"))>16 then
      Response.Write("...")
     End if
   Response.Write("</a></li>")
  rs.movenext
  loop
  End If
  rs.close
 Set rs=nothing
    Response.Write("</ul>")
end function

'热点文章
hotnews=HotNews(13)
Response.Write(hotnews)
%>
</body>
</html>


我知道其实直接写“HotNews(13)”就可以调用了。
主要是想在需要的地方直接加入hotnews,
所以才给HotNews(13)又赋了个值。

但是一直出错是:
Microsoft VBScript 运行时错误 错误 '800a01f5'
非法赋值: 'HotNews'
/officeadmin/untitled.asp,行 34


代码中的红色hotnews=HotNews(13)就是传说中的第34行。

新手学习,不知道应该怎么改。

谢谢!


[ 本帖最后由 towering 于 2010-4-26 16:43 编辑 ]
搜索更多相关主题的帖子: function 赋值 结果 
2010-04-26 16:39
hams
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:18
帖 子:912
专家分:3670
注 册:2008-7-30
收藏
得分:0 
这个函数没有返回结果吧?hotnews=HotNews(13)的结果是多少呢?

俺不高手,俺也是来学习的。
俺的意见不一定就对,当你不认同时请点忽视按钮。
当走到十字路口不知该如何走时,可在论坛问下路,但你若希望别人能一路把你送到目的地,显然是不现实的,因为别人也有自己要走的路。
2010-04-26 16:48
towering
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:1
帖 子:261
专家分:507
注 册:2007-10-9
收藏
得分:0 
直接调用HotNews(13)是显示13条新闻,但是赋值之后就出错了!

我的ASP小站:http://www./
2010-04-26 17:14
gupiao175
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:40
帖 子:1787
专家分:7527
注 册:2007-6-27
收藏
得分:5 
没有看到有返回值!Response.Write("</ul>")该为一个字符窜,msg="</ul>",再把要显示的这个字符窜副给函数名HotNews
在需要显示的地方再显示response.write(HotNews(num))
直接显示也可以!不过建议检查一下变量是否有重名,并确定你传入HotNews(num)这个函数的参数是否有值!
如果你只是想显示一些东西,而不需要返回值的话,建议使用过程sub...end sub.

Q:1428196631,百度:开发地 即可找到我,有事请留言!
2010-04-26 17:53
yms123
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:209
帖 子:12488
专家分:19042
注 册:2004-7-17
收藏
得分:10 
hotnews=HotNews(13)
Response.Write(hotnews)
很明显,变量名称重复
Response.Write(hotnews)
这句话里的hotnews系统不认为是变量,而是函数。
因为ASP的VBScript里不区分大小写,所以hotnews与HotNews系统无法区分这两个哪个是变量,哪个是函数。
2010-04-26 19:28
towering
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:1
帖 子:261
专家分:507
注 册:2007-10-9
收藏
得分:0 
Re四楼:返回值是有的。如果我直接用"HotNews(13)"就是显示13条新闻。只是加上前面的"hotnews="就会报错。

果然是变量有重复!

谢谢!

[ 本帖最后由 towering 于 2010-4-26 20:47 编辑 ]

我的ASP小站:http://www./
2010-04-26 20:02
towering
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:1
帖 子:261
专家分:507
注 册:2007-10-9
收藏
得分:0 
Re五楼:版主的意思是我用了两次hotnews.现在看来还真是这里错了!

我换成"hot=HotNews(13)"就可以了!

谢谢!

[ 本帖最后由 towering 于 2010-4-26 20:32 编辑 ]

我的ASP小站:http://www./
2010-04-26 20:07
towering
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:1
帖 子:261
专家分:507
注 册:2007-10-9
收藏
得分:0 
版主,我还有一个问题,你好人做到底吧.

我现在用function在执行的时候每次都有返回值.

我想用sub好了.我是这样改的:
<%
sub HotNews(num)
......'中间省略
end sub

'热点文章
hot=call HotNews(13)
Response.Write(hot)
%>

可是这样还是会报错呀!
Microsoft VBScript 编译器错误 错误 '800a03ea'
语法错误
/officeadmin/untitled.asp,行 34
hot=call HotNews(13)
----^

我哪里错了?

谢谢!

我的ASP小站:http://www./
2010-04-26 20:44
zzy_420
Rank: 4
等 级:业余侠客
威 望:2
帖 子:78
专家分:217
注 册:2009-3-26
收藏
得分:5 
sub HotNews(num)
......'中间省略
end sub

sub 函数是没有返回值的,你下边的调用 CALL HOTNEWS(13) 怎么能够赋值给 HOT 呢?这就是错误之所在了。去掉赋值 直接调用就可以了。
而 FUNCTION 是允许有返回值的,因此你上面改名字之后就调试正确了。

'热点文章
hot=call HotNews(13) =》call hotnews( 13)
Response.Write(hot)
2010-04-26 21:07
yms123
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:209
帖 子:12488
专家分:19042
注 册:2004-7-17
收藏
得分:0 
Dim VarHotNews'这里是返回值变量
Sub HotNews(num)
    sql="select top "&num&" id, Title,filepath,filename from OfficeNews order by hits,id ASC"
    set rs=Server.CreateObject("ADODB.Recordset")
    rs.open sql,conn,1,1
    VarHotNews="<ul>"
    If rs.eof and rs.bof then
       VarHotNews=VarHotNews&"当前没有文章,请添加!"
    else
       do while not rs.eof
          filepath=rs("filepath")&rs("filename")
          VarHotNews=VarHotNews&"<li><a href='show.asp?id="&rs("id")&"' target='_blank' title='"&rs("title")&"'>"
          VarHotNews=VarHotNews&(left(rs("Title"),16))
          If Len(rs("title"))>16 then
             VarHotNews=VarHotNews&"..."
          End if
          VarHotNews=VarHotNews&"</a></li>"
          rs.movenext
       loop
    End If
    rs.close
    Set rs=nothing
    VarHotNews=VarHotNews&"</ul>"
end sub
'热点文章
Call HotNews(13)
Response.Write(VarHotNews)
2010-04-26 21:27
快速回复:function调用出错---function结果不能再赋值?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.073089 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved