javascriptは、まだ全くの初心者で色々探しながら勉強しています。
過去の質問で動作が似ているものがあったのですが、
複数のテーブルに使えるように変更したいのですが
全くやり方が分かりません。
宜しくお願い致します。
2つのテーブルがあります。
id=AAA と言うテーブルは、今日の天気のラジオボタン
id=BBB と言うテーブルは、今日の花粉のラジオボタン
だとします。
各テーブル内のラジオボタンが選択されたら、
そのテーブルだけに影響するセルの色変更。
つまり、
AAAのテーブル内のラジオボタン選択時は、AAAのセルの色を黄
BBBのテーブル内のラジオボタン選択時は、BBBのセルの色を赤
にしたいのです。
下記にサンプルコードを書きました。
これだと、AAAのテーブルのラジオボタンをクリックすると
BBBのテーブルの背景色がクリアされてしまいます。
どうやって引数を渡していいのか分かりません。
宜しくお願い致します。
<html>
<head>
<title>test</title>
<script type="text/javascript">
<!--
var saveTr;
function setBg(rd) {
if(saveTr) saveTr.bgColor="white";
saveTr=rd.parentNode.parentNode;
saveTr.bgColor="yellow";
}
-->
</script>
</head>
<body>
<table id='AAA'>
<tr><td>
今日の天気
</td></tr>
<tr><td>
<input type='radio' name='tenki' value='1' onClick="setBg(this);">晴れ<br>
</td></tr>
<tr><td>
<input type='radio' name='tenki' value='2' onClick="setBg(this);">曇り<br>
</td></tr>
<tr><td>
<input type='radio' name='tenki' value='3' onClick="setBg(this);">雨<br>
</td></tr>
</table>
<br>
<table id='BBB'>
<tr><td>
花粉の量
</td></tr>
<tr><td>
<input type='radio' name='kafun' value='1' onClick="setBg(this);">多い<br>
</td></tr>
<tr><td>
<input type='radio' name='kafun' value='2' onClick="setBg(this);">普通<br>
</td></tr>
<tr><td>
<input type='radio' name='kafun' value='3' onClick="setBg(this);">少ない<br>
</td></tr>
</table>
</body>
</html>
No.1ベストアンサー
- 回答日時:
AAAのテーブルとBBBのテーブルでそれぞれ別の色を背景色にするのであれば、下記のようにAAAテーブル用の関数、BBBテーブル用の関数に分けた方がいいですよ。
<html>
<head>
<title>test</title>
<script type="text/javascript">
<!--
var saveTr1, saveTr2;
function setBg1(rd) {
if(saveTr1) saveTr1.bgColor="white";
saveTr1=rd.parentNode.parentNode;
saveTr1.bgColor="yellow";
}
function setBg2(rd) {
if(saveTr2) saveTr2.bgColor="white";
saveTr2=rd.parentNode.parentNode;
saveTr2.bgColor="red";
}
-->
</script>
</head>
<body>
<table id='AAA'>
<tr><td>
今日の天気
</td></tr>
<tr><td>
<input type='radio' name='tenki' value='1' onClick="setBg1(this);">晴れ<br>
</td></tr>
<tr><td>
<input type='radio' name='tenki' value='2' onClick="setBg1(this);">曇り<br>
</td></tr>
<tr><td>
<input type='radio' name='tenki' value='3' onClick="setBg1(this);">雨<br>
</td></tr>
</table>
<br>
<table id='BBB'>
<tr><td>
花粉の量
</td></tr>
<tr><td>
<input type='radio' name='kafun' value='1' onClick="setBg2(this);">多い<br>
</td></tr>
<tr><td>
<input type='radio' name='kafun' value='2' onClick="setBg2(this);">普通<br>
</td></tr>
<tr><td>
<input type='radio' name='kafun' value='3' onClick="setBg2(this);">少ない<br>
</td></tr>
</table>
</body>
</html>
x_jouet_xさん、ありがとうございます。
やりたい事が実現されてます。
それと、これならもっと沢山のテーブルの場合でも
その数の分だけ関数を作ればいいのも分かりました。
とても参考になりました。
感謝致します。
No.3
- 回答日時:
こんな感じでどうでしょ?
<html>
<head>
<title>test</title>
<script type="text/javascript">
function setBg(rd) {
var p=rd.parentNode;
while(p){
if(p.nodeName=="TR") var tr=p;
if(p.nodeName=="TABLE"){ var trs=p.getElementsByTagName("tr"); break;}
p=p.parentNode;
}
for(var i=0;i<trs.length;i++){
trs[i].style.backgroundColor="inherit";
}
tr.style.backgroundColor="yellow";
}
</script>
</head>
<body>
<table id='AAA'>
<tr><td>
今日の天気
</td></tr>
<tr><td>
<input type='radio' name='tenki' value='1' onClick="setBg(this);">晴れ<br>
</td></tr>
<tr><td>
<input type='radio' name='tenki' value='2' onClick="setBg(this);">曇り<br>
</td></tr>
<tr><td>
<input type='radio' name='tenki' value='3' onClick="setBg(this);">雨<br>
</td></tr>
</table>
<br>
<table id='BBB'>
<tr><td>
花粉の量
</td></tr>
<tr><td>
<input type='radio' name='kafun' value='1' onClick="setBg(this);">多い<br>
</td></tr>
<tr><td>
<input type='radio' name='kafun' value='2' onClick="setBg(this);">普通<br>
</td></tr>
<tr><td>
<input type='radio' name='kafun' value='3' onClick="setBg(this);">少ない<br>
</td></tr>
</table>
</body>
</html>
No.2
- 回答日時:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<title>test</title>
<table>
<tr>
<td>今日の天気</td>
</tr>
<tr>
<td><input type="radio" name="tenki" value="1">晴れ</td>
</tr>
<tr>
<td>
<input type="radio" name="tenki" value="2">曇り</td>
</tr>
<tr>
<td><input type="radio" name="tenki" value="3">雨</td>
</tr>
</table>
<br>
<table>
<tr>
<td>花粉の量</td>
</tr>
<tr>
<td><input type="radio" name="kafun" value="1">多い</td>
</tr>
<tr>
<td><input type="radio" name="kafun" value="2">普通</td>
</tr>
<tr>
<td><input type="radio" name="kafun" value="3">少ない</td>
</tr>
</table>
<script type="text/javascript">
//@cc_on
document./*@if(1)attachEvent('on'+@else@*/addEventListener(/*@end@*/'click', setBGColor, false);
var BGColor = {'tenki': '#ff0', 'kafun': '#f00', 'none':'#fff'};
function setBGColor (evt) {
var e = evt./*@if (@_jscript) srcElement @else@*/ target /*@end@*/;
var c = 0, r, o;
if ('INPUT' === e.nodeName && 'radio' === e.type) {
r = document.getElementsByName(e.name);
while (o = r[c++]) o.parentNode.style.backgroundColor = BGColor[e == o ? e.name: 'none'];
}
}
</script>
とか。
babu_babooさん、ありがとうございます。
やりたい事が実現されています。
プログラムミングがとても難しいですね。
ここまで高度な事が理解出来るまで頑張って勉強します。
とても参考になりました。
感謝致します。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- AJAX JavascriptからPHPへのAjax通信でnullが返ってくる 3 2022/08/03 22:00
- JavaScript EasyUIのSubGrid(jquery)におけるObjectに入れた連想配列について 1 2022/05/02 11:21
- JavaScript javascript作成してます。ラジオボタンで判定するコードを書いてます。 1 2023/07/18 11:03
- HTML・CSS テーブルタグのセルの幅の一部だけを指定 1 2023/03/12 12:02
- JavaScript javascriptでテーブルに追加した項目のid追加してローカルストレージを操作したい 5 2023/01/01 15:52
- HTML・CSS 【CSS】:hasで可能? imgを含むtr要素を選択したい 1 2022/11/17 14:36
- HTML・CSS 私の能力からして間違っていないような気がします。 4 2022/09/30 13:24
- JavaScript 追加ボタンを押した際に ok ボタンを押した場合のみ入力値が追記されるようにしたいです 6 2022/05/29 09:57
- PHP htmlで複数の個数入力欄を表示させるには 1 2022/09/20 03:11
- Visual Basic(VBA) Selenium.ChromeDriverの使い方について 7 2022/09/22 06:43
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
JavaScriptの「.querySelectorA...
-
入力チェックの外部スクリプト...
-
クリックしたラジオボタンの行...
-
ボタンを押してテキストボック...
-
jQueryでテーブル行の表示・非表示
-
追加したテキストボックスとテ...
-
チェックボックスのON/OFFでVal...
-
正規表現で複数マッチ条件で悩...
-
onchangeイベントを強制的に発...
-
プルダウン 項目が多いので先頭...
-
TextBoxに半角数字以外を入れた...
-
return trueとreturn falseの用...
-
ラジオボタンのチェックが外れ...
-
【jQuery】input nameの文字列...
-
<input>の選択肢をプルダウンメ...
-
【jsp/Java】チェックボックス...
-
特定<table>内の<td>の色を変える
-
<JavaScript>tableタグを入力不...
-
submitした値を返したい
-
JavaScriptで特定のtdタグにcla...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
チェックボックス付きのテーブ...
-
画面表示とともにtableの指定の...
-
JavaScriptの「.querySelectorA...
-
Javascriptの電卓で最初の何も...
-
localStorageでのcheckbox制御
-
文字数を数える際に空白、改行...
-
テーブル内のチェックボックス...
-
クリックしたラジオボタンの行...
-
複数のselect値で1つも選択され...
-
jQueryで合計を出したい
-
送信ボタン連打を抑止したいです
-
ラジオボタンが選択されたらテ...
-
ラジオボタンを一括で操作する...
-
formで項目を連結したい
-
javascriptで表(テーブル)の自...
-
同一nameの input type="text"...
-
動的に生成されるラジオボタン...
-
ボタンクリックでフォーカス移動
-
JavaScriptによる自動計算フォーム
-
選択したテーブルのセルの背景...
おすすめ情報