人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

コンテキストメニューに追加するJavascriptを作成しています。
目的はイントラのwebページ内で任意文字を検索し、検索した文字列と同じ行にあるチェックボックスにチェックを入れる。
可能であれば同じページのダウンロードボタン(Table外)も同時に押される機能があると非常にありがたいです。

文字列の検索、抽出まではできたのですがチェックボックスにチェックを入れる、という仕組みがどうしてもわからず非常に困っております。

対象ページはAccessデータベースからASPを使用して生成されたテーブルです
------------------------------------------------------------------------
チェックボックス | 文書名 | 発行部署 | 属性 | 内容 | 文書形式 | ページ数 |
------------------------------------------------------------------------



チェックボックスには"id"はなく、"name"と"value"の情報は持っています。(Accessで割振られたレコード番号がそれぞれの値になります)
又、ダウンロードボタンにも"id"はなく、"name"と"value"の情報は持っています。

ブラウザのバージョンはIE8、OSはWindows Vistaです。
つたない説明のせいで分かりにくかった場合は申し訳ありません。
よろしくお願いいたします。


●質問者: Cinna-mon
●カテゴリ:コンピュータ インターネット
✍キーワード:access ASP IE8 JavaScript name
○ 状態 :キャンセル
└ 回答数 : 3/3件

▽最新の回答へ

1 ● Cherenkov

目的はイントラの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>
◎質問者からの返答

ヒントの入力ありがとうございます。

質問の書き方が悪かったようです。申し訳ありません。

書きたいプログラムはJavascript自体が本文(webページ)の中に記載されているものではなく、レジストリエディタにJavascriptが書かれたソースを登録しておいて、右クリックメニューで呼び出すプログラムを作成したいのです。

ですのでbodyもformも持たないので、この方法は使えないようです・・・

せっかくヒントをお寄せいただいたのに申し訳ありません。

ありがとうございました。


2 ● you1031931

チェックボックスにぺけマークかなんかをつけるだけでもできると思いますが

出来ないんでしたら○でもつけてみてはどうですか?


3 ● a-kuma3

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 にしてあげると、チェックが入った状態になります。

◎質問者からの返答

ヒントをお教えいただきありがとうございます。

少し書きたかったプログラムとは違いますが参考にさせていただきますね

ありがとうございました。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ