0

我的 html 文件中有这个:

<script type="text/vbscript">
    Function FormatADateUsingLocale(aDate)
        Dim vbDate vbDate = DateValue (aDate)
        FormatADateUsingLocale = FormatDateTime(vbDate, 2)
</script>

这是从相同的 HTML 文件 JavaScript 函数调用的:

function buildMenuBar(){ 
    aDs = FormatADateUsingLocale("1899/12/23"); 
    alert(aDs);
}

它在大多数机器上都能正常工作。但是在其中一台机器上我看到了这个错误:aDs is undefined.

4

2 回答 2

1

我在您的 vbs 代码中看到了一些错字,可以说它们是在复制/粘贴期间,但最好提及它们。

  1. 最明显的是你缺少End Function.
  2. 在行Dim我看到 2 个问题。

FirstvbDate在 VBScript 中保持不变。最好不要在变量名前面使用“vb”。

其次,声明和启动是两个独立的进程/命令,这意味着......

' next is incorrect
Dim x = 0

' next is correct
Dim x
x = 0

' next is correct too, but not recommendable
Dim x : x = 0

好的,可能:在该行中缺少冒号 ( ) 也是一个错字。

您可以将字符串文字值直接传递给FormatDateTime函数,而无需显式转换。更重要的是检查传递给函数的参数是否可以转换为vbDate函数IsDate,否则DateValue也会失败并出现“类型不匹配”错误。因此,以完整函数结束时,还应该预测在参数无法转换为有效vbDate类型的情况下它将返回什么。

' shortly, something like this
Function FormatADateUsingLocale(ByVal aDate)
    If Not IsDate(aDate) Then aDate = "9999/12/31"
    FormatADateUsingLocale = FormatDateTime(aDate, 2)
End Function

当然,这是基本思想,您可能希望返回空字符串或其他东西,以防传递的参数是“无效的”。

于 2013-02-28T10:30:26.697 回答
0

您是否有错误的行号或您收到的确切错误消息?在 buildMenuBar() 函数中,ads 应该被视为隐式声明的全局变量。这应该只是一个警告,表明有些事情不太正确,而不是错误。

如果我像下面这样添加一个 JavaScript 函数,那么我会按预期在警报框中显示“未实现”。

function buildMenuBar() {
    aDs = FormatADateUsingLocale("1899/12/23");
    alert(aDs);
}
function FormatADateUsingLocale (p) {
     return "Not implemented";
};
于 2013-02-27T11:59:23.493 回答