フォーカスの色がえ

[統計] HTMLからXHTMLへの移行を進めていますか?



0   名前: かえる : 2005/12/06 09:20
はじめまして。
tableがあって、各セルには入力フィールドがあります。
フォーカスがあたっている行のどれかの入力フィールドにフォーカスがあたれば、
その行の背景色と各セルの入力フィールドの背景色を変えるスクリプトを作るのに
困っています。
今は、行の背景色とフォーカスのあたっているセルの色は変えるのに成功してあります。
下記のスクリプトがそうなります。
よろしくお願いします。

/* Tableの行背景色の変更スクリプトサンプル
* Tableのセル内のcheckboxのonclickイベントに登録する。
*element:
*p1:選択行の背景色
*p2:選択行の文字色
*/
var checkedBgcolor="highlight";
var checkedFgcolor="highlighttext";

function SelectRow(element,p1,p2,fm){

if(p1!=undefined){checkedBgcolor=p1}else{checkedBgcolor="highlight"}
if(p2!=undefined){checkedFgcolor=p2}else{checkedFgcolor="highlighttext"}
var w1 = element.tagName;
var w2 = element.type;

var color1;
var color2;
color1=checkedBgcolor;
color2=checkedFgcolor;


var w4 = element.parentNode;
while(w4.tagName!="TR"){
w4 = w4.parentNode;
}
var i;
var w5=w4.childNodes;

for(i=0;i<w5.length;i++){
w5[i].bgColor=color1;
w5[i].runtimeStyle.color=color2;
}

var str = element.style.backgroundColor;
if(str!="lime"){
element.style.backgroundColor = "lime";

var id="form1:table1:0:textField7"

}else{
element.style.backgroundColor = "white";
}




}

1   名前: Pid : 2005/12/06 09:20
えーと,ざっと見ではご希望通りの動作をしているような気がしますが。

最終的にどうなれば良いのか,そして今のところどこまでできていて,何がうまくいかないのかを,具体的な HTML も踏まえつつ,もう少し詳しく説明して頂けますか。


あとご質問とは関係ない部分で,

> w5[i].runtimeStyle.color=color2;

ここで runtimeStyle を書き換えているのはなぜでしょうか。

> var id="form1:table1:0:textField7"

HTML 4.0 までならこれで構わないのですが,もし XHTML への移行を考えるなら,コロン(:)は使わない方が良いでしょう(名前空間表記とぶつかってしまう)。

2   名前: かえる : 2005/12/06 09:20
回答ありがとうございます。

(今の状態)
フォーカスがあたっているセルのtextFieldの背景と一行分のセルの背景が
色をかえることができている。

(したいこと)
フォーカスがあたっているセルのtextFieldの背景と一行分のセルの背景、
そして各セルのtextFieldの色を同時に全部変えたいのです。

そこでつまっています。




> w5[i].runtimeStyle.color=color2;
上記は、特に使っていません。削除します。
すいません。

3   名前: Bill閣下 : 2005/12/06 09:20
・テーブルのところの具体的なコードを教えてくださいな。

・if(p1!=undefined){checkedBgcolor=p1}else{checkedBgcolor="highlight"}
三項演算子を使えば少し見やすくなるかも。
checkedBgcolor = (p1!=undefined) ? p1 : "highlight";

4   名前: かえる : 2005/12/06 09:20
ありがとうございます。今まで、自分で試行錯誤していましたが皆さんのおかげでがんばれそうです。他のサイトにもカキコしてご迷惑をおかけしました。ルールをまもって、他の方の見本になるようにします。また、ご報告します。

一覧へ戻る