目的はイントラのwebページ内で任意文字を検索し、検索した文字列と同じ行にあるチェックボックスにチェックを入れる。
可能であれば同じページのダウンロードボタン(Table外)も同時に押される機能があると非常にありがたいです。
文字列の検索、抽出まではできたのですがチェックボックスにチェックを入れる、という仕組みがどうしてもわからず非常に困っております。
対象ページはAccessデータベースからASPを使用して生成されたテーブルです
------------------------------------------------------------------------
チェックボックス | 文書名 | 発行部署 | 属性 | 内容 | 文書形式 | ページ数 |
------------------------------------------------------------------------
・
・
・
チェックボックスには"id"はなく、"name"と"value"の情報は持っています。(Accessで割振られたレコード番号がそれぞれの値になります)
又、ダウンロードボタンにも"id"はなく、"name"と"value"の情報は持っています。
ブラウザのバージョンはIE8、OSはWindows Vistaです。
つたない説明のせいで分かりにくかった場合は申し訳ありません。
よろしくお願いいたします。
目的はイントラのwebページ内で任意文字を検索し、検索した文字列と同じ行にあるチェックボックスにチェックを入れる。
可能であれば同じページのダウンロードボタン(Table外)も同時に押される機能があると非常にありがたいです。
最低限コピペで動作するソースを貼ったほうがいいかと思います。
チェックボックスのchecked属性にtrueを入れればチェックされ、falseでチェックが外れます。
<html> <head> <meta charset="utf-8"> <script> function hatena() { document.form1.check1.checked = true; } </script> </head> <body> <form name="form1"> <input type="checkbox" name="check1" value="hatena">はてな <br> <input type="button" value="チェックを入れる" onclick="hatena()"> </form> </body> </html>
IE 限定ですけど、こんなことができます。
<html> <script> function $(id) { return document.getElementById(id) } function do_find() { var txt = $("txt").value if (document.selection) { var range = document.selection.createRange() range.moveEnd("textedit") if (range.findText(txt)) { var cell = range.parentElement() if (cell.tagName == "TD") { var row = cell.parentElement var inps = row.getElementsByTagName("INPUT") for (var i = 0 ; i < inps.length ; ++i) { if (inps[i].type == "checkbox") { inps[i].checked = true } } } } } else { alert("Sorry !") } } </script> <body> <button onclick="do_find()">find !</button> <input id="txt" type="text" size=80 value=""> <p> <table border="1"> <tr> <td><input type="checkbox"> <td>一行目。 </tr> <tr> <td><input type="checkbox"> <td>2ぎょうめ。 </tr> <tr> <td><input type="checkbox"> <td>third line. </tr> </table> </body> </html>
TextRange オブジェクトの findText() メソッドを使うと、その文字列が含まれる要素を
TextRange.parentElement() メソッドで取得できます。
それを parent の方向にたどっていくと、テーブルの行に当たる <TR> 要素が取得できるので、
その <TR> 要素の下から <INPUT type="checkbox"> な要素を探してあげて、
checked 属性を true にしてあげると、チェックが入った状態になります。
ヒントをお教えいただきありがとうございます。
少し書きたかったプログラムとは違いますが参考にさせていただきますね
ありがとうございました。
ヒントの入力ありがとうございます。
質問の書き方が悪かったようです。申し訳ありません。
書きたいプログラムはJavascript自体が本文(webページ)の中に記載されているものではなく、レジストリエディタにJavascriptが書かれたソースを登録しておいて、右クリックメニューで呼び出すプログラムを作成したいのです。
ですのでbodyもformも持たないので、この方法は使えないようです・・・
せっかくヒントをお寄せいただいたのに申し訳ありません。
ありがとうございました。