getElementById

idプロパティが指定された文字列に一致する要素を表すElementオブジェクトを返します。

構文
element = document.getElementById( id )
引数
id
探す要素のid
戻値
指定された ID に一致する DOM 要素オブジェクトを記述したElementオブジェクト、文書内に一致する要素がなければ NULL を返します。

idは基本的に一つしかないのでgetElementsById(複数形)でないことに注意!

関連

getElementsByTagName
タグ名から取得
getElementsByClassName
クラス名から取得
querySelectorAll
CSS セレクターから取得

取得例

<div id="content">こんにちは!</div>
DIM element = IE.document.getElementById("content") PRINT element.inerText // こんにちは!

タグ内のタグにアクセスする

getElementByIdはelementオブジェクトを返すが、その他getElementsByTagName・getElementsByClassNameなどはelementsオブジェクトを返すので、Item(n)で番号を指定する。

<div id="content"> <p>Happy Birthday!</p> </div>
DIM element = IE.document.getElementById("content") DIM elements = element.getElementsByTagName("p") PRINT elements.Item(0).innerText // Happy Birthday!

同じidを持つ要素が複数ある場合

querySelectorAllの引数にCSS セレクターを「#id」で指定すると取得できます。

DIM elements = IE.document.querySelectorAll("#id") FOR n = 0 TO elements.length PRINT elements.Item(n).innerText NEXT

要素をクリック

指定したidの要素をクリックするには以下のように記述します。

DIM element = IE.document.getElementById("id") element.click()

プログラム実行例

Yahoo!ファイナンスから米ドル・ユーロ・豪ドルのレートを取得

IE = CREATEOLEOBJ("InternetExplorer.Application") IE.Visible = TRUE IE.Navigate("https://info.finance.yahoo.co.jp/fx/") BusyWait(IE) // ループを抜ける用のフラグ PUBLIC flg = FALSE // ESCキーを入力でloopBreak関数を実行 SETHOTKEY(VK_ESC, , "loopBreak") REPEAT usd = IE.document.getElementById("USDJPY_top_bid").innerText eur = IE.document.getElementById("EURJPY_top_bid").innerText aud = IE.document.getElementById("AUDJPY_top_bid").innerText msg = "米ドル/円<#TAB>" + usd + "<#CR>" + _ "ユーロ/円<#TAB>" + eur + "<#CR>" + _ "豪ドル/円<#TAB>" + aud + "<#CR>" + _ "ESCで終了" FUKIDASI(msg) SLEEP(0.01) UNTIL flg = TRUE IE.Quit PROCEDURE loopBreak() flg = TRUE FEND ////////////////////////////////////////////////// // 【引数】 // IE : IEオブジェクト // 【戻値】 // ////////////////////////////////////////////////// PROCEDURE BusyWait(IE) TRY SLEEP(0.500) REPEAT SLEEP(0.010) UNTIL !IE.Busy AND IE.readyState = 4 EXCEPT SLEEP(5.000) ENDTRY FEND

Yahoo! JAPANトップページのメニューを取得

IE = CREATEOLEOBJ("InternetExplorer.Application") IE.Visible = TRUE IE.Navigate("http://yahoo.co.jp") BusyWait(IE) DIM element = IE.document.getElementById("ToolList") DIM elements = element.getElementsByTagName("li") FOR element IN elements PRINT element.textContent NEXT IE.Quit ////////////////////////////////////////////////// // 【引数】 // IE : IEオブジェクト // 【戻値】 // ////////////////////////////////////////////////// PROCEDURE BusyWait(IE) TRY SLEEP(0.500) REPEAT SLEEP(0.010) UNTIL !IE.Busy AND IE.readyState = 4 EXCEPT SLEEP(5.000) ENDTRY FEND
<div id="ToolList"> <ul> <li>ショッピング</li> <li>PayPayモール</li> <li>ヤフオク!</li> <li>PayPayフリマ</li> <li>ZOZOTOWN</li> <li>LOHACO</li> <li>トラベル</li> <li>一休.com</li> <li>一休.comレストラン</li> <li>ニュース</li> <li>天気・災害</li> <li>スポーツナビ</li> <li>ファイナンス</li> <li>テレビ</li> <li>映画</li> <li>GYAO!</li> <li>ゲーム</li> <li>Yahoo!モバゲー</li> <li>ebookjapan</li> <li>占い</li> <li>地図</li> <li>路線情報</li> <li>Retty</li> <li>クラシル</li> <li>不動産</li> <li>自動車</li> <li>TRILL <li>パートナー</li> </ul> </div>
結果
ショッピング
PayPayモール
ヤフオク!
PayPayフリマ
ZOZOTOWN
LOHACO
トラベル
一休.com
一休.comレストラン
ニュース
天気・災害
スポーツナビ
ファイナンス
テレビ
映画
GYAO!
ゲーム
Yahoo!モバゲー
ebookjapan
占い
地図
路線情報
Retty
クラシル
不動産
自動車
TRILL
パートナー

歌ネットから歌詞を取得してテキストファイルに保存

CONST ssfDesktop = 0 DIM IE = CREATEOLEOBJ("InternetExplorer.Application") IE.Visible = TRUE IE.Navigate("https://www.uta-net.com/song/280568/") BusyWait(IE) DIM element, elements, name, lyrics element = IE.document.getElementById("view_kashi") elements = element.getElementsByClassName("title") name = TRIM(elements.Item(0).innerText) element = IE.document.getElementById("kashi_area") lyrics = element.innerText IE.Quit DIM Shell = CREATEOLEOBJ("Shell.Application") DIM Folder = Shell.NameSpace(ssfDesktop) DIM path = Folder.Self.Path DIM FSO = CREATEOLEOBJ("Scripting.FileSystemObject") path = uniqueFilename(FSO.BuildPath(path, name + ".txt")) DIM FID = FOPEN(path, F_READ OR F_WRITE) FPUT(FID, lyrics) FCLOSE(FID) ////////////////////////////////////////////////// // 【引数】 // IE : IEオブジェクト // 【戻値】 // ////////////////////////////////////////////////// PROCEDURE BusyWait(IE) TRY SLEEP(0.500) REPEAT SLEEP(0.010) UNTIL !IE.Busy AND IE.readyState = 4 EXCEPT SLEEP(5.000) ENDTRY FEND ////////////////////////////////////////////////// // 【引数】 // path : ファイルのパス // 【戻値】 // 重複しないファイル名 ////////////////////////////////////////////////// FUNCTION uniqueFilename(path) DIM FSO = CREATEOLEOBJ("Scripting.FileSystemObject") IFB FSO.FileExists(path) THEN fol = FSO.GetParentFolderName(path) filename = FSO.GetBaseName(path) extension = FSO.GetExtensionName(path) i = 2 WHILE FSO.FileExists(FSO.BuildPath(fol, filename + " (" + i + ")." + extension)) i = i + 1 WEND RESULT = FSO.BuildPath(fol, filename + " (" + i + ")." + extension) ELSE RESULT = path ENDIF FEND

この記事は役に立ちましたか?
役に立った 役に立たなかった