【问题标题】:document.getElementByID - checking whether an element has been found or notdocument.getElementByID - 检查是否找到了一个元素
【发布时间】:2011-02-02 03:33:02
【问题描述】:

这是一个示例代码,它打开一个 Internet Explorer 窗口,导航到 google,并通过其唯一 id 获取页面上的某些元素:

set ie = CreateObject("InternetExplorer.Application")

ie.navigate("www.google.com")
ie.visible = true

while ie.readystate <> 4
    wscript.sleep 100
WEnd

set some_object = ie.document.getelementbyid("xjsc")

MsgBox some_object.tagname, 0

这个示例给我带来了一个DIV 弹出窗口,完全让我满意。

但在下一步中,我想检查页面中是否存在某些 id。不幸的是,我不能只是,像,

set some_object = ie.document.getelementbyid("some_non_existant_id")
if some_object.tagname = "" then
...

因为它给了我以下错误:

ie.vbs(12, 1) Microsoft VBScript runtime error: Object required: 'some_object'

那么,检查某个元素是否已找到的最佳做法是什么?

【问题讨论】:

    标签: html dom scripting vbscript


    【解决方案1】:
    if isObject(some_object) then 
    

    如果变量包含一个对象,那么它就被找到了......

    [更新] 经过一些测试和一些cmets,你需要使用isNothing方法..

    因为你要设置一个对象,所以它总是一个对象变量类型,但是如果没有找到它,它就会被设置为空..

    if isNothing(some_object) then
    

    我已经用你的示例代码检查了上面的内容,它按预期工作..

    在 vbscript 中是这样的

    if some_object is nothing then
    

    【讨论】:

    • 是的,但在这两种情况下它都会为我重新运行true,即使什么也没找到!
    • @现在就在这里,查看isNull(甚至isEmpty)。根据规范,如果没有找到,它会返回 null ..
    • 我做到了,无论是否找到元素,它们似乎都输出 false。
    • 事情越来越奇怪了....D:\work\_tmp\ie.vbs(12, 1) Microsoft VBScript runtime error: Type mismatch: 'isnothing' 顺便说一句,isNothing 是 VB6 函数,不是吗?我没有在 VBScript refs 中找到它。
    • @be here now,你是对的 .. 我在考虑 vb .. vbscript 等价于 if some_object is nothing then
    猜你喜欢
    • 1970-01-01
    • 2019-04-16
    • 1970-01-01
    • 2017-03-15
    • 1970-01-01
    • 2020-08-15
    • 2019-02-12
    • 2016-06-29
    • 1970-01-01
    相关资源
    最近更新 更多