3

我创建了一个经典的 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'

有人有想法吗?

4

5 回答 5

5
  1. Option Explicit意味着您必须先 DIM 变量才能使用它们。
  2. <!--#INCLUDE file='ADOVBS.inc'-->不是 vbscript,因此不要将它们包含在 <% %> 脚本分隔符标记之间。
  3. 你需要调暗 strgrade
  4. 在使用它之前, 您需要DIM strlettergrade
  5. 修正 Lettergade(strgrade) 的错字

<%@ 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 
%> 
于 2012-04-18T19:28:36.020 回答
2

尝试摆脱Set函数调用的内部并分配Lettergrade = lgs.

于 2012-04-18T17:34:37.340 回答
1

Variable is undefined: 'Lettergade'

函数似乎没有被调用Lettergrade-Lettergade可能只是一个错字问题

尝试改变:

strlettergrade=Lettergade(strgrade)

strlettergrade=Lettergrade(strgrade)

于 2012-04-18T18:01:48.167 回答
1

这个脚本有几个问题,Chris 和 Ryan 已经指出了一些问题。

  1. Set仅在将对象分配给变量时才需要。字符串不是 VBScript 中的对象。摆脱Set脚本中的所有 's。

  2. 克里斯提到的明显错字。更改LettergadeLettergrade

  3. 您似乎没有声明strlettergradeorstrGrade变量。启用后(Option Explicit这是一个很好的做法),必须声明所有变量。用于Dim此(如函数内部的那个)。

  4. 您似乎使用字符串作为Lettergrade函数的参数。由于变量名是strgrade. 在您与integer. 这可能会导致问题。cInt首先使用该函数将您的字符串转换为整数。

  5. 包括需要去外面的<% %>标签。移动<!--#INCLUDE file='ADOVBS.inc'-->到下一行Option Explicit

按照这些步骤操作,或从@Cape Cod Gunny 复制粘贴脚本。在此之后,您的脚本应该按预期工作;)。除了第 4 点,你仍然需要纠正它。

于 2012-04-18T19:26:40.203 回答
0

您在调用函数时拼错了 Lettergrade。变量未定义:' Lettergade ' 另外我也会接受 SLaks 的建议。Set 不应该用于字符串。

于 2012-04-18T18:04:37.087 回答