掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
HTML上の複数同一タグの特定の属性値を全て取得するには? (ID:77276)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
最初の質問で[Web フォーム]という言葉が出てきたので、 ASP.NET(+VB.NET)の話題かと思ってしまいました。(^^; 「GetElementsByTagName」ではなく、 「getElementsByTagName」という事だったので、 VB6 + WebBrowser/InternetExplorer (+ MSHTML)という 可能性も考えては居ましたけれど……今回の質問の構文をみると、 どうやら .NET 以前のVBの事を質問されていたようですね。 .NET以前のVBでオブジェクトを扱うときは、代入時に、 必ずSetステートメントを使う必要がある事に注意してください。 つまり、 varOBJ = doc.getElementsByTagName("input") ではなく、 Set varOBJ = doc.getElementsByTagName("input") という事です。 # Setあり無し、それぞれの構文を実行後、 # MsgBox TypeName(varOBJ) でオブジェクトの型を見てみると、 # それぞれ、結果が異なっていることがわかるかと思います。 この事は、HTMLのオブジェクト以外の物を扱う場合にも言える事です。 例えば、 Set varObj = Form1.Text1 とすると、TextBoxコントロールオブジェクトそのものが varObj変数に格納されますが、これを varObj = Form1.Text1 のようにしてしまうと、TextBox自体ではなく、 TextBoxの標準プロパティであるTextプロパティの値が 参照されるため、結果的に varObj = Form1.Text1.Text と同じような意味になってしまうのです。 HTMLの場合でいうと、getElements系が返す「allオブジェクト」という コレクションは、「itemプロパティ」という規定プロパティを持ちます。 そしてitemプロパティは、引数無しで呼ばれると、その先頭要素を 戻す事になっているのです。 **************************************** さて、長々と書いてしまいましたが、本題に戻りますと。。。 1. Setステートメントを使って、INPUTのコレクション(allオブジェクト)を取得する。 Set varOBJ = doc.getElementsByTagName("INPUT") 2. For Eachループを使ってallの中身を列挙する。 For Each varItem In varOBJ MsgBox varItem.name Next もしくは、 1. Setステートメントを使って、INPUTのコレクション(allオブジェクト)を取得する。 Set varOBJ = doc.getElementsByTagName("INPUT") 2. allオブジェクトのlengthプロパティを使って、要素数を調べる。 Max = varOBJ.length 3. For ループと、allのitemプロパティを使って、各要素を列挙する。 For N = 0 To Max - 1 MsgBox varOBJ.item(N).name Next というコーディングとなります。 ちなみに、先に書いたように「itemプロパティ」は、allの規定プロパティであるため、 上記の3.の記述は、[item]を省略して、『MsgBox varOBJ(N).name』のようにしてもOKです。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.