HTA Vbscript文件系统对象和DOM

HTA Vbscript文件系统对象和DOM,dom,vbscript,hta,Dom,Vbscript,Hta,下面是原型代码,我正在编写该代码,用于将特定文件夹中的文本文件内容放入.hta文档的div中。 使用document.write我可以轻松地在文档上书写,但我想将文本文件的内容写入特定的div。 当我试图运行代码时,什么都没有发生 <html> <head> <title>Notes</title> <script language="vbscript"> Set fso = CreateObject("Scripting.FileSy

下面是原型代码,我正在编写该代码,用于将特定文件夹中的文本文件内容放入.hta文档的div中。 使用document.write我可以轻松地在文档上书写,但我想将文本文件的内容写入特定的div。 当我试图运行代码时,什么都没有发生

<html>
<head>
<title>Notes</title>
<script language="vbscript">
Set fso = CreateObject("Scripting.FileSystemObject")
FileName = "C:\Documents and Settings\anamdev\Desktop\demo.txt"
Set fileObj = fso.GetFile(FileName)
Set ts = fileObj.OpenAsTextStream(1, -2)
Set objDiv = Document.getElementById("content")
objDiv = ts.ReadAll
Do While ts.AtEndOfStream <> True
    TextLine = ts.ReadLine
    Document.getElementById("content").innerHtml TextLine & "<br />"
Loop
ts.Close
</script>
</head>
<body>
<span id="head"></span>
<input type="button" value="Previous" name="pre" />
<input type="button" value="Next" name="nxt" />
<hr>
<div id="content">
</div>
</body>
</html>

问题是,在解析页面时,会执行中的代码。这意味着在运行脚本时,content元素不存在。我希望您实际上得到了一个由于任何原因都没有显示的对象必需错误

至少有两种方法可以解决此问题:

将脚本块移动到文档末尾,即关闭标记之前:

Cheran Shunmugavel是正确的+1,我将只附加一些我在代码中看到的其他问题

Set objDiv = Document.getElementById("content")
objDiv = ts.ReadAll
以上这些都没有意义。将对象设置为变量objDiv,并立即在下一行用字符串覆盖该变量

无论如何,在读取所有文本流之后,您的文本流已经达到EOF,所以下一个循环什么也不做:

Do While ts.AtEndOfStream <> True
    TextLine = ts.ReadLine
    Document.getElementById("content").innerHtml TextLine & "<br />"
Loop
简而言之,您可以这样做:

Set objDiv = Document.getElementById("content")
objDiv.innerHtml = ts.ReadAll
ts.Close

你确定什么都没发生吗?似乎至少有一个脚本错误消息。是的,当我运行上述代码时,什么都没有发生,甚至没有错误消息。初始化代码应该进入过程子窗口。\u onLoad.1。Cheran Shunmugavel关于脚本标记位置的建议也同样有用。2.哦,那是。循环只是为了显示我用来获取HTA文档中文本文件内容的方法之一。3.正如Panayot Karabakalov和脚本标记的位置所指出的,我所做的错误是使用了错误的赋值方法。脚本标记应该在body标记之后,或者我应该使用window.onload方法。4.是的,现在开始工作了。
Do While ts.AtEndOfStream <> True
    TextLine = ts.ReadLine
    Document.getElementById("content").innerHtml TextLine & "<br />"
Loop
Object.Property Value   'incorrect
Object.Property = Value 'correct
Set objDiv = Document.getElementById("content")
objDiv.innerHtml = ts.ReadAll
ts.Close