
いつもお世話になっております。
IE6.0上で動作するものとして質問させていただきます。
以下のソースの中でBODYタグのonloadイベントで
initメソッドを呼びだし、メソッド中で
表中の任意のセルの背景色を変更するにはどのように
すればよいのでしょうか。
---------------------------------------
<HTML>
<HEAD>
<script language="JavaScript">
<!--
function init(){
//------ここでで各セルの背景色を変更したいのです。
}
-->
</script>
</HEAD>
<BODY onload="init(); ">
<FORM name="tttt">
<TABLE border="1" >
<TBODY>
<TR>
<TD onClick="this.style.backgroundColor = 'black';">test</TD>
<TD onClick="this.style.backgroundColor = 'red';">test</TD>
<TD onClick="this.style.backgroundColor = 'yellow';">test</TD>
</TR>
</TBODY>
</TABLE>
</FORM>
</BODY>
</HTML>
---------------------------------------
ソースは簡略化しておりますので、内容に不備がございましたら、ご容赦ください。
ご回答をよろしくお願いいたします。
No.1ベストアンサー
- 回答日時:
1.<form>は必要無い。
2.<body>のonLoadも要らない。
IE限定でやる気なら咎めませんが、<td>のonClickはあまり有効的ではないと思いますよ(一応)
<script language="JavaScript">
<!--
function ChgBg(id,color){
if(document.getElementById){
document.getElementById(id).style.background = color;
}
}
// -->
</script>
<table>
<tr>
<td id="td1" onClick="ChgBg('td1','black')">hoge......</td></tr>
<tr>
<td id="td2" onClick="ChgBg('td2','red')">foo.......</td></tr>
<tr>
<td id="td3" onClick="ChgBg('td3','yellow')">bar.......</td></tr>
</table>
initじゃなく、ChgBgって関数にしてます。
適時変更してみてください。

No.2
- 回答日時:
先の方の回答と重なる部分もありますが…
スクリプトの側から任意のセルの背景色を変更する場合、まずはその対象となるセルに固有のIDをふっておいて、それを辿って背景色を変更する処理を記述するのが良いと思います。 こちらの場合、formなどは使わなくてもすみます。
document.getElementById(***).style.backgroundColor="hoge";
と言う記述をJavaScriptの文中に入れることで、特定のID「***」を持つセルの背景色をhoge色にすることができます。
なお、これはDOMを利用した記述になり、古いブラウザではエラーメッセージをだすことがあるので、それを防止する意味で、
if (document.getElemenetById){~~~}
というif文の中で先述の処理を記述するのが望ましいと思います。
各セルに対してID名をふるのが困難、あるいは面倒な場合は、同じくDOMを使った方法になりますが、DOMではHTMLファイル中の各要素を配列としてソートして持っているという特性を使って、「TD」要素の配列を利用し、その番号によって要素を特定すると言う方法もあります。
if(document.getElementsByTagName){
document.getElementsByTagName("TD")[x].style.backgroundColor="hoge";
}
こう記述すると、そのHTMLファイルの中の(x+1)番目のセルの背景色をhoge色にすることができます。 このとき、配列の連番は0から開始されるので、1番目(一番初め)のセルを指定する場合の配列の番号は0になることに注意してください。 こちらの場合は、HTMLファイル中のセルの数・連番を管理できれば、body以下のテーブルのソースを書き換えなくても、特定のセルを指定することができます。
とりあえず、IE6での動作を重視してアドバイスしてみました。 他にも同様の処理をさせる記述方法はあるかもしれません。
あと、最後になんですが、ページを読み込まれたときに背景色を調整しておきたいと言う場合は、スクリプトを通じて背景色を操作するよりも、直接CSSで背景を定義したほうが早いかもしれません。 特定のセルにだけ特定の背景色をつけたいと言う場合は、IDやclassなどのセレクタをうまく使えばよいと思います。 スクリプトを使う必要性がさほど高くないケースでは、スタイルシートで定義してしまったほうが楽かもしれませんね。
参考になれば…
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excel UserForm の表示位置
-
Excel 範囲指定スクショについ...
-
C# DataGridViewで複数選択した...
-
Excelで空白セル直前のセルデー...
-
エクセルVBA 配列からセルに「...
-
【Excel VBA】マクロで書き込ん...
-
Worksheet_Change
-
【VBA】【ユーザーフォーム_Lis...
-
[C#]DataGridViewのVirtual Mod...
-
特定の色のついたセルを削除
-
オーバーフローを回避する方法?
-
Rangeの範囲指定限界
-
MS Accessのウインドウ内の右端...
-
データグリッドビューの結合セ...
-
CSVファイルを読み込んだらセル...
-
マクロ初心者です。 マクロで範...
-
円弧の描画方法
-
For Eachを使わないVBA マクロ
-
ユーザフォームを使ってのデー...
-
エクセルマクロ セルの色つけ
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel UserForm の表示位置
-
VBAマクロ実行時エラーの修正に...
-
特定の色のついたセルを削除
-
エクセルVBA 配列からセルに「...
-
【VBA】【ユーザーフォーム_Lis...
-
Excelで空白セル直前のセルデー...
-
C# DataGridViewで複数選択した...
-
【Excel VBA】マクロで書き込ん...
-
データグリッドビューの結合セ...
-
【Excel VBA】一番右端セルまで...
-
入力規則のリスト選択
-
VBA:日付を配列に入れ別セルに...
-
DataGridViewでグリッド内に線...
-
エクセル、マクロで番号を読込...
-
エクセルのカーソルを非表示に...
-
マクロ初心者です。 マクロで範...
-
EXCEL VBA 文中の書式ごと複写...
-
Excel 範囲指定スクショについ...
-
セルの半透明着色処理
-
【ExcelVBA】値を変更しながら...
おすすめ情報