我尝试编写嵌入HTML页面的VBScript函数,以便一次将CSS样式更改应用于多个项目。我希望函数接受一个变量数组,其中元素可以是以下两者的混合:
最初,为了解析数组的元素,我尝试使用VarType()检查项是vbString还是vbObject,如果是前者,则调用document.getElementById()来转换id将字符串转换为对象以进行进一步操作。
我非常惊讶地发现当传递从getElementById()调用返回的DOM对象时,VarType()将总是返回vbString。我不得不切换到使用TypeName(),因为它能够区分实际的String和DOM对象。
使用其他非DOM对象调用VarType()会返回vbObject,正如预期的那样,为什么它认为DOM对象是字符串?
答案 0 :(得分:3)
大胆的部分就在于:
https://msdn.microsoft.com/en-us/Library/3kfz157h%28v=vs.84%29.aspx
VarType函数永远不会返回Array的值。它 始终添加到某个其他值以指示a的数组 特殊类型。 Variant的值仅在具有时返回 已添加到Array的值以指示该参数 VarType函数是一个数组。例如,为。返回的值 整数数组计算为2 + 8192或8194. 如果是对象 有一个默认属性,VarType(object)返回它的类型 默认属性。
这是一个测试:
Class ObjWithDefaultProperty
Public Default Property Get Self
Self = "string"
End Property
End Class
Class ObjWithoutDefaultProperty
End Class
Dim with_default
Set with_default = New ObjWithDefaultProperty
Dim with_no_default
Set with_no_default = New ObjWithoutDefaultProperty
MsgBox VarType(with_default) 'Returns vbString
MsgBox VarType(with_no_default) 'Returns vbObject
解决方法:
Function VarTypeEx(var)
If IsObject(var) Then
VarTypeEx = vbObject
Else
VarTypeEx = VarType(var)
End If
End Function