• ベストアンサー

WSH

こんにちは。 下記のようなものを作りたいのですが、動きません。 どう記述するものなのでしょうか? おかしい部分はループ内の"I"です。 HTMLでフォームをおき、一列(4つ)一組として、三列用意しました。たとえば、 あ い う え か き く け さ し す せ と各テキストボックスに入力し、実行ボタンを押したとき、テキストファイルには、 あ,い,う,え か,き,く,け さ,し,す,せ と書き込まれるようにしたいのです。 下記、ソースです。 よろしくお願いいたします。 <script language=vbscript> <!-- Sub ok_OnClick dim o,p,q,r,str,I,n n=3 Set fso = CreateObject("Scripting.FileSystemObject") Set tmpFile = fso.CreateTextFile("a.txt") for I =1 to n o=File[I]Name1.value p=File[I]Name2.value q=File[I]Name3.value r=File[I]Name4.value str=o+","+p+","+q+","+r tmpFile.WriteLine(str) loop tmpFile.close Set tmpFile = Nothing Set fso = Nothing End Sub --> </script> <html><body><center> <input type=text name=File1Name1 value=""> <input type=text name=File1Name2 value=""> <input type=text name=File1Name3 value=""> <input type=text name=File1Name4 value=""><br> <input type=text name=File2Name1 value=""> <input type=text name=File2Name2 value=""> <input type=text name=File2Name3 value=""> <input type=text name=File2Name4 value=""><br> <input type=text name=File3Name1 value=""> <input type=text name=File3Name2 value=""> <input type=text name=File3Name3 value=""> <input type=text name=File3Name4 value=""><br><br><br> <input type=button name=ok value=登録></center> </body> </html>

質問者が選んだベストアンサー

  • ベストアンサー
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.3

私も作ったので、挙げときます。 ファイル名は、フルパスにした方がいいです。 あと、当然ですが、ローカルでないと動きません(多分)。 >属性nameがまったく同じ物があるのに… そういう場合は、配列になります。 なので、 TheForm.FileName1(0).value のようにアクセスできます。 <script language=vbscript> <!-- Sub ok_OnClick dim o,p,q,r,str,I,n n=3 Set fso = CreateObject("Scripting.FileSystemObject") Set tmpFile = fso.CreateTextFile("C:\temp\a.txt") if tmpFIle is Nothing then msgBox "Can not create file" for I=1 to n o=document.getElementById("File" & CStr(I) & "Name1").value p=document.getElementById("File" & CStr(I) & "Name2").value q=document.getElementById("File" & CStr(I) & "Name3").value r=document.getElementById("File" & CStr(I) & "Name4").value str=o & "," & p & "," & q & "," & r tmpFile.WriteLine str next tmpFile.close Set tmpFile = Nothing Set fso = Nothing End Sub --> </script> <html><body><center> <input type=text id=File1Name1 value=""> <input type=text id=File1Name2 value=""> <input type=text id=File1Name3 value=""> <input type=text id=File1Name4 value=""><br> <input type=text id=File2Name1 value=""> <input type=text id=File2Name2 value=""> <input type=text id=File2Name3 value=""> <input type=text id=File2Name4 value=""><br> <input type=text id=File3Name1 value=""> <input type=text id=File3Name2 value=""> <input type=text id=File3Name3 value=""> <input type=text id=File3Name4 value=""><br><br><br> <input type=button name=ok value=登録></center> </body> </html>

cluewm
質問者

お礼

getElementByIdについて調べてみたら、 IE5~ ということでしたので、 all(IE4~)にしてみました。 動作も確認できました! ありがとうございました。

その他の回答 (2)

  • Azzuri
  • ベストアンサー率68% (34/50)
回答No.2

以下の通りです。 <HTML> <HEAD> <SCRIPT LANGUAGE="VBScript"> <!-- Sub ok_OnClick Dim o,p,q,r,str,i,n,TheForm n=2 Set TheForm = Document.forms("Test") Set fso = CreateObject("Scripting.FileSystemObject") Set tmpFile = fso.CreateTextFile("a.txt") For i =0 To n o = TheForm.FileName1(i).value p = TheForm.FileName2(i).value q = TheForm.FileName3(i).value r = TheForm.FileName4(i).value str = o & "," & p & "," & q & "," & r tmpFile.WriteLine(str) Next tmpFile.close Set tmpFile = Nothing Set fso = Nothing End Sub --> </SCRIPT> </HEAD> <BODY> <FORM id="Test"><center> <input type=text name=FileName1 value=""> <input type=text name=FileName2 value=""> <input type=text name=FileName3 value=""> <input type=text name=FileName4 value=""><br> <input type=text name=FileName1 value=""> <input type=text name=FileName2 value=""> <input type=text name=FileName3 value=""> <input type=text name=FileName4 value=""><br> <input type=text name=FileName1 value=""> <input type=text name=FileName2 value=""> <input type=text name=FileName3 value=""> <input type=text name=FileName4 value=""><br><br><br> <input NAME="ok" type="Button" value="登録"> </center></FORM> </BODY> </HTML>

cluewm
質問者

お礼

ありがとうございます。 動作確認できました。 しかし、inputの属性nameがまったく同じ物があるのになぜ正常に動くのでしょうか? 例:FileName1が3つある また、 o = TheForm.FileName1(i).value についてですが、 i=0のとき、 TheForm.FileName1(0).value となりますが、 TheForm.FileName1(0).valueがなぜ <input type=text name=FileName1 value=""> に入っている値となるのでしょうか?

  • popesyu
  • ベストアンサー率36% (1782/4883)
回答No.1

forはnextです。 DoがLoop

関連するQ&A

専門家に質問してみよう