コンテキストメニューに追加するJavascriptを作成しています。

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

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

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



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

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

回答の条件
  • 1人5回まで
  • 13歳以上
  • 登録:2011/08/26 21:43:53
  • 終了:2011/09/02 21:06:41

回答(3件)

id:Cherenkov No.1

Cherenkov回答回数1503ベストアンサー獲得回数4932011/08/26 22:25:30

目的はイントラの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>
id:uzu47

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

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

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

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

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

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

2011/08/29 21:53:32
id:you1031931 No.2

you1031931回答回数323ベストアンサー獲得回数32011/08/28 12:35:45

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

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

id:a-kuma3 No.3

a-kuma3回答回数4523ベストアンサー獲得回数18802011/08/29 14:17:47

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

id:uzu47

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

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

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

2011/08/29 21:49:44
  • id:a-kuma3
    >文字列の検索、抽出まではできたのですが
    どうやって実現しました?
    JScript で、TextRange.findText() を使った?
  • id:uzu47
    コメント&ヒントの入力ありがとうございます。
    まさかこんなに早く回答がいただけるとは思っていなかったので返答が遅れてしまいすみませんでした。

    質問の書き方が悪かったみたいです。申し訳ありません。
    書きたいプログラムはJavascript自体が本文(webページ)の中に記載されているものではなく、レジストリエディタにJavascriptが書かれたソースを登録しておいて、右クリックメニューで呼び出すプログラムを作成したいのです。
    ですのでbodyもformも持たず、scriptの内容だけを書き、必要な時だけ走らすプログラムになります。

    少し、求めていたものとは違いますが参考にさせていただきます。ありがとうございました。
  • id:Cherenkov
    文字列の検索、抽出のソースが知りたいです。
  • id:Cherenkov
    動作確認の方法も

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません