- ベストアンサー
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>
- みんなの回答 (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>
その他の回答 (2)
- Azzuri
- ベストアンサー率68% (34/50)
以下の通りです。 <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>
お礼
ありがとうございます。 動作確認できました。 しかし、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)
forはnextです。 DoがLoop
お礼
getElementByIdについて調べてみたら、 IE5~ ということでしたので、 all(IE4~)にしてみました。 動作も確認できました! ありがとうございました。