プロが教えるわが家の防犯対策術!

<script type="text/javascript">
<!--
function change(bg_color){
document.bgColor = bg_color;
}
//-->
</script>
************
<table>
<tr>
<td onclick="change('#FFFFEE')" style="background-color: #FFFFEE">クリーム</td>
<td onclick="change('#EEFFFF')" style="background-color: #EEFFFF">水色</td>
<td onclick="change('#FFEEFF')" style="background-color: #FFEEFF">桃色</td>
<td>~~</td>
</tr>
</table>
************
javascript初心者です。テストでなんとか動くようになりました・・・
これで間違いないでしょうか?

これで正しければ onclick="change('#~~~')"の記述を全カ所にこれから入れようと思うのですが、
onclick="change('#~~~')"の部分を記述しないで、
style="background-color: #~~~">のstyleの色名#~~~を引っ張り込む方法とか、統一する方法とか簡素化する方法はありますか?
例えば<td style="background-color: #FFFFEE">クリーム</td>
HTMLはこのままでできないでしょうか?
ここで教えて頂いた以下の画像の場合は出来たので同じように出来れば嬉しいのですが・・・

<script type="text/javascript">
function change(evt) {
e = evt.target || evt.srcElement;
if (e.nodeName=='IMG') document.body.style.backgroundImage = 'url(' + e.src +')';
}
</script>

<table onclick="change(event)">
<tr>
<td><img src="a001.jpg"></td>
<td><img src="a002.jpg"></td>
<td><img src="a003.jpg"></td>
</tr>
</table>

***********************
なかなか応用ができなくて困っています。
なんとか簡単にできれば嬉しいです<(_ _)>

A 回答 (4件)

>例えば<td style="background-color: #FFFFEE">クリーム</td>


>HTMLはこのままでできないでしょうか?

と、あったので、てがるなきもちで。
けっして、質問者を軽視しているわけではありませんが
いつもガチで書くべきなのか考えます。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html lang="ja">
<head>
<meta http-equiv="Content-Script-Type" content="application/javascript">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>TEST</title>
</head>
<body>

<table>
<tr>
<td style="background-color: #FFFFEE">クリーム</td>
<td style="background-color: #EEFFFF">水色</td>
<td style="background-color: #FFEEFF">桃色</td>
</tr>
</table>

<script type="text/javascript"><!--
//@cc_on
/*@if( @_jscript ) attachEvent( 'on' + @else@*/ addEventListener (/*@end@*/
 'load', function ( ) {

  document./*@if( @_jscript ) attachEvent( 'on'+ @else@*/ addEventListener(/*@end@*/
   'click', function ( evt ) {
    var e = evt./*@if( @_jscript ) srcElement @else@*/ target /*@end@*/;

    if( 'TD' === e.nodeName ) {
     document.body.style.cssText = e.style.cssText;
    }
    
   }, false);
 }, false);
//ぜんかくくうはくは、はんかくにでもなおしてね。
//-->
</script>
</body>
</html>

'TR'は'TD'でうごきます。
    • good
    • 0
この回答へのお礼

何度もありがとうございます。全部動作しましたw
何もわからないので教えて頂いた通りにコピペしていますので
できれば綺麗で簡素なソースを教えて頂けると嬉しいです。
検索してもなかなか見つけられず困っていました。
今回はHTMLのTD内を全部修正しなくて済みましたので非常に助かりました。ありがとうございました。

お礼日時:2009/10/26 00:40

。。

。提示のまま変更でよくない?
わざわざ ID 振って、問題のあるレガシープロパティを使う理由ってのは?

function change( evt ) {
var e = evt.target || evt.srcElement;
e.tagName == 'TR' && ( document.body.style.backgroundColor = e.style.backgroundColor );
}
    • good
    • 0
この回答へのお礼

画像のサンプルを書き換えていただけたのですね。
最初は動かなかったのですが、NO4さんの回答で書き換えたら動きました。
このような応用ができなくて困っていました。助かりました<(_ _)>

お礼日時:2009/10/26 00:32

スクリプトを<head>のなかに、おかないで、


</body>のちょくぜんにおくといいよ。

すくりぷとがじっこうされたとき、
まだTABLEがよみこまれてないから
えら~になっているとおもう
    • good
    • 0
この回答へのお礼

おっしゃるとおりでしたw ありがとうございました。

お礼日時:2009/10/26 00:29

こんなのは


<table id="p">
<tr>
<td style="background-color: #FFFFEE">クリーム</td>
<td style="background-color: #EEFFFF">水色</td>
<td style="background-color: #FFEEFF">桃色</td>
</tr>
</table>

document.getElementById('p').onclick = function (ev) {
 var e = ev ? ev.target: event.srcElement;
 var a = 'backgroundColor';
 var s = 'style';

 document.body[s][a] = e[s][a];
}
とか
  document.body[s].cssText = e[s].cssText;
にしたりすると、たのしいとか?

この回答への補足

なにもわからないのですが、
下記のようにそのままコピペで設定しましたら
動かないようです・・・何かいけないのでしょうか?
 再度検証お願いします<(_ _)>

<script type="text/javascript">
document.getElementById('p').onclick = function (ev) {
var e = ev ? ev.target: event.srcElement;
var a = 'backgroundColor';
var s = 'style';
document.body[s][a] = e[s][a];
}
</script>
************
<table id="p">
<tr>
<td style="background-color: #FFFFEE">クリーム</td>
<td style="background-color: #EEFFFF">水色</td>
<td style="background-color: #FFEEFF">桃色</td>
</tr>
</table>

補足日時:2009/10/25 17:18
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!