我创建了一个经典的asp页面,其功能如下:
<%@ Language=VBScript %>
<% Option Explicit %>
<%
<!--#INCLUDE file='ADOVBS.inc'-->
Response.Buffer = True
%>
<%
Function Lettergrade(lg)
Dim lgs
if lg>50 then
set lgs="P"
else
set lgs="F"
end if
set Lettergrade= lgs
End Function
%>
<%
set strlettergrade=Lettergade(strgrade)
... other code goes here
%>
我正在尝试在表达式中调用该函数,但是当它给出了以下错误时:
Microsoft VBScript运行时错误“800a01f4”
变量未定义:'Lettergade'
有没有人有想法?
答案 0 :(得分:5)
<%@ Language=VBScript %>
<% Option Explicit %>
<% Response.Buffer = True %>
<!--#INCLUDE file='ADOVBS.inc'-->
<%
Dim strlettergrade
Dim strgrade
%>
<%
Function Lettergrade(lg)
if lg > 50 then
Lettergrade ="P"
else
Lettergrade ="F"
End Function
%>
<%
strgrade = 75
strlettergrade=Lettergrade(strgrade)
... other code goes here
%>
答案 1 :(得分:2)
尝试删除函数调用中的Set
,然后只分配Lettergrade = lgs
。
答案 2 :(得分:1)
Variable is undefined: 'Lettergade'
函数似乎被称为Lettergrade
而不是Lettergade
- 可能只是一个错字问题
尝试更改:
strlettergrade=Lettergade(strgrade)
到
strlettergrade=Lettergrade(strgrade)
答案 3 :(得分:1)
这个脚本存在一些问题,Chris和Ryan已经指出了一些问题。
将对象分配给变量时,只需要Set
。字符串不是VBScript中的对象。摆脱脚本中的所有Set
。
克里斯提到的明显错字。将Lettergade
更改为Lettergrade
。
您似乎没有声明strlettergrade
或strGrade
变量。启用Option Explicit
后(这是一种很好的做法),必须声明所有变量。使用Dim
(就像你的功能中的那个)。
您似乎使用字符串作为Lettergrade
函数的参数。由于变量名称为strgrade
。在您与integer
进行比较的函数中。这个可能导致问题。首先使用cInt
函数将字符串转换为整数。
需要超出<% %>
标记。将<!--#INCLUDE file='ADOVBS.inc'-->
移至Option Explicit
按照以下步骤操作,或从@Cape Cod Gunny复制粘贴脚本。在此之后,您的脚本应该按预期工作;)。除了第4点,你仍然需要纠正它。
答案 4 :(得分:0)
调用该功能时,你拼错了Lettergrade。变量未定义:' Lettergade '我也会接受SLaks建议。 Set不应该用在字符串上。