我的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
。
答案 0 :(得分:1)
我在你的vbs代码中看到了一些拼写错误,让我们说它们在复制/粘贴过程中,但最好提一下。
End Function
。Dim
行,我看到了2个问题。第一个vbDate
在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
这是基本的想法,当然,如果传递的参数是“无效的”,你可能希望返回空字符串或其他东西。
答案 1 :(得分:0)
您是否有错误的行号或您收到的确切错误消息?在buildMenuBar()函数中,aDs应该被视为隐式声明的全局变量。这应该只是警告某些事情不是正确的,而不是错误。
如果我添加如下所示的JavaScript函数,那么我会按预期在警告框中显示“未实现”。
function buildMenuBar() {
aDs = FormatADateUsingLocale("1899/12/23");
alert(aDs);
}
function FormatADateUsingLocale (p) {
return "Not implemented";
};