VBScript需要对象。

3
Option Explicit 
Dim output, ProxyEnable, ProxyServer, wshShell, doc

Sub Window_onLoad
    loadProxySettings()
End Sub 

Set wshShell = CreateObject("WScript.Shell")
ProxyEnable = wshShell.RegRead("HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ProxyEnable")
ProxyServer = wshShell.RegRead("HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ProxyServer")

Function loadProxySettings()
    If ProxyEnable = 1 Then
        proxyStatus.className = "enabled"
        proxyStatus.innerHTML = "Proxy aktiv"

        toggleProxyButton.value = "Proxy deaktivieren"

        proxyServer.value = ProxyServer
    Else
        proxyStatus.className = "disabled"
        proxyStatus.innerHTML = "Proxy deaktiviert"

        toggleProxyButton.value = "Proxy aktivieren"

        proxyServer.value = ProxyServer
    End If 
End Function

我找不到问题所在,为什么会出现这个错误:

对象要求 "ProxyStatus"

(是的,我有一个id为proxyStatus的span元素)


1
“Set doc = document” 似乎将“doc”设置为未初始化的内容。 - John Coleman
嗯,我也试过了,但还是一样的问题。这就是为什么我感到如此恼火。嗯,不过还是谢谢你。 - Steve
编辑您的代码以显示doc被设置为什么。 - John Coleman
1
呀..这是一个hta..它应该已经被声明了吧? - Steve
@Steve 在问题中提到这一点会很有用,可以避免人们猜测。 - user692942
显示剩余4条评论
2个回答

1

回到这个代码

Set ProxyStatus = document.getElementById("proxyStatus")
Set ToggleProxyButton = document.getElementById("toggleProxy")
Set ProxyServerInput = document.getElementById("proxyServer")

只要HTML正确格式化,这里唯一的错误就是在引用DOM中现有对象时使用了Set。尝试像这样从这些行中删除Set;
ProxyStatus = document.getElementById("proxyStatus")
ToggleProxyButton = document.getElementById("toggleProxy")
ProxyServerInput = document.getElementById("proxyServer")

0
在HTAs中,您可以像变量一样使用有ID的元素的ID。例如,如果您有这样一个元素:
<p>foo <span id="proxyStatus">something</span> bar</p>

你应该能够在代码中直接使用它,而无需进行任何操作:

MsgBox proxyStatus.innerText

谢谢,我知道,但它也不起作用...仍然是一样的,似乎getElementById在DOM中找不到该元素。 - Steve
@steve 如果它找不到DOM元素,可能无法将HTML视为有效结构,请尝试验证HTML。 - user692942
1
你移除了 getElementById() 语句,以免干扰现有变量了吗?你的 HTML 中包含框架或内联框架吗? - Ansgar Wiechers

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接