- ベストアンサー
VBScriptの繰り返し文について
こんにちは。下のスクリプトでクリックボタンをクリックすると、サブフォルダ名が表示されるようにしたいのですが、どこのクリックボタンをクリックしても、一番下のサブフォルダの名前が表示されてしまいます。何かいい方法はあるでしょうか。よろしくお願いいたします。 <html><head> <title>test</title> </head> <body> <h3>サブフォルダ一覧</h3> <table border> <tr><td>サブフォルダ名</td><tr> <script language=VBScript> <!-- Option Explicit Dim FSO Dim TestFolder Dim F Dim X set FSO = CreateObject("Scripting.FileSystemObject") Set TestFolder = FSO.GetFolder(".").ParentFolder For Each f IN TestFolder.SubFolders X = f.name Document.Write "<tr><td> " & X & " </td></tr><td><input type=button onclick=setnum value=クリック></td></tr>" Next Sub setnum msgbox X End Sub Set FSO = Nothing Set TestFolder = Nothing --> </script> </table> </body></html>
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
<html> <head> <title>test</title> </head> <body> <h3>サブフォルダ一覧</h3> <table border> <tr> <td>サブフォルダ名</td><td>ボタン</td> </tr> <script language=VBScript> <!-- Option Explicit Sub setnum(param) msgbox param End Sub Dim FSO Dim TestFolder Dim F Dim X set FSO = CreateObject("Scripting.FileSystemObject") Set TestFolder = FSO.GetFolder(".").ParentFolder For Each f IN TestFolder.SubFolders X = f.name Document.Write "<tr><td> " & X & " </td><td><input type=button onclick=setnum('" & X & "') value=クリック></td></tr>" Next Set FSO = Nothing Set TestFolder = Nothing --> </script> </tr> </table> </body> </html> とりあえず、これで。
その他の回答 (1)
- ham_kamo
- ベストアンサー率55% (659/1197)
あらら、私も質問者様のソースを修正していたら先を越されてしまいました。ほとんどNo.1の方と同じなのでそれは割愛して、少し解説を。 For~Nextでフォルダ一覧をテーブルで表示しているうちにXの値は変わっていき、全部表示した時点で、Xの値は最後のフォルダになっています。なので、Sub setnumの中身がmsgbox Xだと、どのボタンを押しても最後のフォルダを表示してしまいます。したがって、Forループの中で「ボタンを押したとき、(onclickでsetnumを設定するとき)に、どのフォルダ名を表示するか」という制御を入れる必要がある、というわけです。
お礼
ありがとうございました。
お礼
ありがとうございました。