HTML の radio にチェックをいれるには

解決


ksc  2006-03-29 09:15:46  No: 94818

<input  name="pf6" type="radio" value="1"> 成行 </input><br><input  name="pf6" type="radio" value="0" checked > 指値 </input>

というのがあって
.Document.forms(0).elements("pf6").(0).Click
などと  やっても見ましたが
メソッドをサポートしていませんと出ます・・・
どうすればいいのでしょうか


魔界の仮面弁士  2006-03-29 11:45:12  No: 94819

質問時には、必ず環境を書いてください。
それによって、使える命令も異なりますので。

HTMLを操作するコードを書くにしても、たとえば VBScript と VB6 と
VB.NET 2002/2003 と VB2005 とでは、それぞれ、別のコードになります。
(特に、VB2005 のマネージ DOM の場合)

> というのがあって
細かい事を言うと、これ、HTML の文法になってないですよ。
HTMLでは、</INPUT> という表記は許可されていませんから…。
(まぁ、IE/WebBrowser の方で、適当に解釈されるでしょうけれども)

> .Document.forms(0).elements("pf6").(0).Click
VB6 かな?
だとしたら、(0)の前のドットは不要でしょう。

それから、ラジオボタンの on / off については、上記のように
Click メソッドを呼び出すのではなく、checked プロパティに
True / False を入れるようにしてみてください。


ksc  2006-03-30 06:44:22  No: 94820

早速のご返事ありがとうございます
すいませんでした
当方の環境ですが  XP  ホームエディション  2002  サービスパック2
で  VB6  SP5  です

CGI  で  pf6  の部分が  接続するたびに  変更されて

  成行  指値のラジオボタンが表示され
VBにて  コントロールしたいのですが  
成行  指値の  区別ができません  両方  pf6  ですよね    

いろいろやってみます
説明はうまくできなくてすみません


ksc  2006-03-30 07:00:14  No: 94821

HTML は  ある証券会社の  ネットのもので
それを  操作したいのですが
なかなかできません

With MyIe
.Document.forms(0).elements("pf6").Checked = True

End With

オブジェクト変数または  With  ブロック変数が設定されていません
と出ます

どうしたらいいのでしょうか
すいません


魔界の仮面弁士  2006-03-30 18:34:47  No: 94822

> HTML は  ある証券会社の  ネットのもので
『ある証券会社』とだけ言われましても、具体的な URL や HTML 構造が
わからない以上、正しいコードを提示しようが無いですよ。(^^;)

フレームセットになっていれば、コードも変わってきますし、
そもそも、.forms()に指定するインデックスが本当に 0 で良いのかも、
質問内容からは分かりません。

> オブジェクト変数または  With  ブロック変数が設定されていません
> と出ます
そのエラーが出たならば、どのオブジェクトまでが取得できていて、
どのオブジェクトが Nothing になっているのかをチェックしましょう。

たとえば、ページを遷移した直後に document プロパティにアクセスすると、
HTML の解析が終わっておらず、HTML構造を正常に取得できなかったり、
そのようなエラーが出たりする事があります。

> .Document.forms(0).elements("pf6").Checked = True
これだとまずいですね。

<input name=pf6> が複数存在しているため、.elements("pf6") からは
複数の要素を返すコレクションが返される事になります。
すなわち、そのうちの何番目を操作するのかを指定しなければなりません。

たとえば、元のHTMLが
 <body>
   <form action="foo.cgi">
     <p>
       <input type=radio name=pf2 value="Word">Word
       <input type=radio name=pf2 value="Excel">Excel
     </p>
     <p>
       <input type=radio name=pf6 value="C#">C#
       <input type=radio name=pf6 value="J#">J#
       <input type=radio name=pf6 value="VB">VB
     </p>
   </form>
 </body>

のような構造だったとすれば、このような動作になります。

  'これは「1」を返す
  Debug.Print .document.forms.length

  'これらは「5」を返す
  Debug.Print .document.forms(0).elements.length
  Debug.Print .document.forms.item(0).elements.length
  Debug.Print .document.getElementsByTagName("INPUT").length

  'これらは「3」を返す
  Debug.Print .document.forms.item(0).elements("pf6").length
  Debug.Print .document.forms(0).elements("pf6").length
  Debug.Print .document.forms(0).pf6.length
  Debug.Print .document.getElementsByName("pf6").length

  'これらは「2」を返す
  Debug.Print .document.forms(0).elements("pf2").length
  Debug.Print .document.forms(0).pf2.length

  'これらはいずれも、「VB」を on にするコード
  .document.forms(0).elements("pf6").item(2).checked = True
  .document.forms(0).elements("pf6")(2).checked = True
  .document.forms(0).elements(4).checked = True
  .document.forms(0).pf6.item(2).checked = True
  .document.forms(0).pf6(2).checked = True
  .document.forms(0).childNodes(1).children(2).checked = True


ksc  2006-03-31 08:58:00  No: 94823

よくわからない質問で  よく  答えていただき
ありがとうございました  
.document.forms(0).elements("pf6")(2).checked = True
で  うまく  動きました  感謝します


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加