0

以下は、特定のフォルダーに存在するテキスト ファイルのコンテンツを .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>
4

2 に答える 2

4

<script>問題は、ページが解析されているときにコードが実行されることです。これは、スクリプトの実行時に「コンテンツ」要素が存在しないことを意味します。なんらかの理由で表示されない「オブジェクトが必要です」というエラーが実際に発生していると思います。

これに対処するには、少なくとも 2 つの方法があります。

  1. </body>スクリプト ブロックをドキュメントの最後、終了タグの直前に移動します。

    <html>
    <head>
    <title>Notes</title>
    </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>
    
    <script language="vbscript">
    Document.getElementById("content").innerHtml = "Hello!"
    </script>
    </body>
    </html>
    
  2. サブルーチンで初期化コードをラップし、windowオブジェクトのonloadイベント ハンドラーから呼び出します。

    <html>
    <head>
    <title>Notes</title>
    <script language="vbscript">
    Sub Init
        Document.getElementById("content").innerHtml = "Hello!"
    End Sub
    
    Set window.onload = GetRef("Init")
    
    'Alternatively, you could do this to the <body> element:
    '  <body onload="Init()">
    </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>
    
于 2013-06-22T06:28:28.463 に答える