始めまして。
web画面をVB上に配置して自動処理を目的としたPG作業をしております。
現在ログイン画面の操作を行っております。
奇数(1,3,5,7…)番目のユーザーはログイン出来ました。
しかし偶数(2,4,6,8…)番目がログインされません。
過去ログを参考にしておりますが、いまいち理解できません。
Q1.「getElementsByName」とは何でしょうか?
Q2.下記コードで何処が不適切なのでしょうか?
どなたかご教授お願い致します。
ここからHTML-----------------------------------------------------
<FORM name="form1" method="POST" action="URL"><INPUT NAME="GXHC_GX_jst" TYPE="HIDDEN" VALUE="90c77177662d6164" ></INPUT><INPUT NAME="GXHC_JSESSIONID" TYPE="HIDDEN" VALUE="8f30c585d924103b" ></INPUT>
<table border=1 bordercolor=red border="0" cellspacing="1" cellpadding="1" width="610">
<TR>
<TD COLSPAN="2">
<B>ユーザーIDとパスワードを入力して 「ログイン」ボタンを押してください。</B><BR>
ユーザー登録を未だお済ませでない方は、 <A href="URL">ユーザー登録ページ</A>で承っております。<BR><BR>
契約結果通知書に記載されている、ユーザーID、パスワードをご確認の上、<B><FONT size="+1">「半角」</FONT></B>にて入力願います。ユーザーID、パスワードがわからない場合、<A href="###" onClick="javascript:pdf_wind('URL')">XXX</A>を・・・。
</TD>
</TR>
</TABLE>
<BR>
<table border=1 bordercolor=red border="0" cellspacing="1" cellpadding="1">
<TR>
<TD align="right" width="50%">ユーザーID</TD>
<TD width="50%"><input type="text" name="loginid" size="15" maxlength="12">(半角)</TD>
</TR>
<TR>
<TD align="right">パスワード</TD>
<TD><input type="password" name="password" size="15" maxlength="12">(半角)</TD>
</TR>
<TR>
<TD></TD>
<TD ALIGN="left"><INPUT type="image" src="../../etczen/images/XX.gif" border="0" alt="ログイン" width="68" height="21"></TD>
</TR>
</TABLE>
</FORM>
ここからコード-----------------------------------------------------
Public Sub login(ByVal no As Integer, ByVal id As String, ByVal pass As String)
'変数定義
Dim obj1 As Object
'IDとパスワードをセット
Me.WebBrowser1.Document.All.loginid.Value = id
Me.WebBrowser1.Document.All.Password.Value = pass 'Item73
'formnameをセット
Set obj1 = Me.WebBrowser1.Document.getElementsByName("form1")
'formnameの処理判断
If obj1.length > 0 Then
'サブミット
obj1(0).submit
End If
End Sub
getElementsByNameを使わなくても
'IDとパスワードをセット
Me.WebBrowser1.Document.form1.loginid.Value = id
Me.WebBrowser1.Document.form1.Password.Value = pass 'Item73
'サブミット
Me.WebBrowser1.Document.form1.submit
で、いいのでは?
> 奇数(1,3,5,7…)番目のユーザーはログイン出来ました。
> しかし偶数(2,4,6,8…)番目がログインされません。
これは、意味がよくわかりません。
ユーザーの'IDとパスワードを配列に入れてて、その偶数番目が
ログインされないということでしょうか?
あと、loginプロシージャの引数noが使われていないようですが・・・。
# それにしても、元のHTML文法が出鱈目……。
> Q1.「getElementsByName」とは何でしょうか?
VB6では、
Form1.Text1.Text = "aaa"
という表記を、文字列(コントロール名)を使って
Form1.Controls("Text1").Text = "aaa"
のように書き表す事ができます。
そしてgetElementsByNameも同様です。DHTMLにおいては、
<input name="loginid">
というコントロールを操作する場合に、この要素を
document.getElementsByName("loginid")
などととして取得できるようになっているわけです。
ただし getElementsByName は、『Element「s」』と複数形になっている
事からもわかるように、その戻り値は「複数の要素」となります。
ですから、たとえば lengthプロパティを使って
document.getElementsByName("loginid").length
のようにして、「name="loginid"という属性を持った要素の数」を取得したり、
あるいは、括弧をつけて要素番号を渡す事で、
document.getElementsByName("loginid")(0).value
と、「最初(0番目)のloginidの内容(value)」を読み書きするなどといった
操作が必要になります。
なお、提示されたコード中にある「document.all.コントロール名」も、
HTMLの内容次第では、これも「複数の要素」を返す可能性がありますので、
注意してください。(一つの要素しか返さない場合もあります)
LESIA様、魔界の仮面弁士様、お忙しい中ご教授ありがとうございます。
何とか問題が解決いたしました。
また1つ勉強になりました。
弁さんのご指摘の通り...
________________________________________________________
HTML4.01 Strict としてチェックしました。
30個のエラーがありました。このHTMLは -122点です。
タグが 18種類 41組使われています。
このHTMLには重要な問題が多く含まれています。
環境によっては閲覧できない可能性が非常に高いと言えます。
________________________________________________________
直したほうが良いと思います。
ツイート | ![]() |