表の1行を選択状態にするには?

[上に] [前に] [次に]
ばーばぱぱ 1999/05/24(月) 11:17:18
表のある部分をクリックするとその行全体を選択状態にすることは
可能でしょうか?
いろいろ調べたのですが、テキストの入力エリアの文字を選択状態に
する document.Form名.Textオブジェクト名.SELECT()しか
分かりませんでした。
どうか教えてください。お願いします。

Nobu3 1999/05/24(月) 16:57:22
選択状態というのが「コピー」などをするための行為ならば「はずれ」ですが、
IE4ではタグ単位でなら背景などの色は変更できます。

function sel(){
window.event.srcElement.style.backgroundColor=Math.floor(Math.random()*16777216);
}
document.onclick=sel;

ただし、これは無差別です(bodyにも効いてしまうので・・・)。
限定させるならば、

function sel2(act){
act.style.backgroundColor=Math.floor(Math.random()*16777216);
}

色を変更したいタグに「onclick="sel2(this)"」を付け足します。
どのタグでもできます(たぶん)。

でも、はずれの匂いが濃厚・・・


ばーばぱぱ 1999/05/24(月) 17:51:26
Nobu3さん、せっかく発言してくださったのに、
はずれなんです。そうです、つまりドラッグ状態にしたいのです。
説明不足でごめんなさい。皆さん勘違いしてしまったんでは
ないでしょうか。
改めて、解答をよろしくお願いします。

みんこ 1999/05/25(火) 09:01:59
Macだったらふつーに3回クリックで一行選択できますが...。


たこすけ 1999/05/25(火) 09:24:30
window.find()で見つかった文字列は
選択された状態になるので、コレを利用してみてはどうでしょう?

NC4以上限定でセルがまたげない等の規制がありますが・・・・。

ぱよ☆ [E-Mail] 1999/05/25(火) 09:48:51
えっと、わたしも確実なものではないんですが(^^;)

document.Form名.Textオブジェクト名.focus();
document.Form名.Textオブジェクト名.select();

とやったらその選択されたところが選択された状態になっていた
記憶があります。ブラウザーによって違ったりするんでしょうか...
(^^;) ちゃんとお答え出来なくてスミマセン。


ばーばぱぱ 1999/05/26(水) 17:23:05
えーと、ぱよ☆さんのやり方だと選択状態にならないので
背景色を使うことにしました。
そこで、1行クリックして背景色を変更した後、
他の行をクリックした場合、
その行の背景色を変更し、前にクリックした行の背景色を
元に戻すには、どうしたらよいでしょうか?
ちなみにブラウザはIE4です。


Nobu3 1999/05/26(水) 17:41:54
var lst;
function sel(){
if(lst)lst.style.backgroundColor=document.body.style.backgroundColor;
lst=window.event.srcElement;
if(lst.tagName=='BODY')return;
window.event.srcElement.style.backgroundColor='blue';
}
document.onclick=sel;

こんなものですか?


Nobu3 1999/05/26(水) 17:45:18
lst.style.backgroundColor='blue';

あ、最後の文もこっちのほうが簡単ですね。
#当然(?)、ホームページに使ってもNNでは動きませんよ?


ばーばぱぱ 1999/05/27(木) 11:06:57
Nobu3さん、ソースありがとうございます。
しかし、このソースだと行ではなく、1つのセルにしか
きかないのです。
ちゃんと<TR>にonclick="sel()"としているにもかかわらず
なんで行単位で変更してくれないのでしょう。
いろいろ試したのですが分かりませんでした。
どこか変更したらできますか?


Nobu3 1999/05/27(木) 11:17:34
失礼しました。
今のスクリプトはボディ以外の単品(タグ)に対して自動的に効くようになってます。
「onclick="sel()"」は必要ありません。
改造版を以下に書きます。

var lst;
function sel(){
if(lst)lst.style.backgroundColor=document.body.style.backgroundColor;
if(window.event.srcElement.tagName=='TD'){
lst=window.event.srcElement.parentElement;
lst.style.backgroundColor='blue';
}
}
document.onclick=sel;

テーブルに対してのみ反応します。
セルをクリックすると、その行のセルの背景が変わります。
関係無いところをクリックすると、元に戻ります。(たぶん)


ばーばぱぱ 1999/05/27(木) 11:44:33
たびたびすみません。
テーブルがいくつかあり、1つのテーブルに限定して
行いたいとき、どうしたらよいですか。
あと、元の色に戻すとき、色を指定(BODYと色が違うので)
できますか。

Nobu3 1999/05/27(木) 13:05:34
クラスを指定してやれば、限定させる事ができます。
また、色は指定できます。(実際に最後の行でしています。)
document.body.style.backgroundColorを好きな色にすれば良いです。

変更させたい<td>に「class=sample」とか適当につけて、

if(window.event.srcElement.tagName=='TD'){



if((window.event.srcElement.tagName=='TD')&&(window.event.srcElement.className=='sample')){

にすればできるでしょう。

ただ、そこまで限定させるのなら、上に書いた「sel2()」の方を使うのが良いかもしれません。
やってる事はほぼ同じなので、ちょっと考えればできるでしょう。
試行錯誤が勉強になります。


ばーばぱぱ 1999/05/27(木) 13:32:06
[[解決]]
Nobu3様、本当にありがとうございます。
おかげで助かりました。これからも勉強して
分からないことがあったら教えてください。


[上に] [前に] [次に]