プロが教える店舗&オフィスのセキュリティ対策術

以下のようなテーブル行に付けたすごく長いJavascriptを
class="line_color" のようにCSS等にまとめて
記述する方法はあるでしょうか?

■現在
<tr onmouseover="setPointer(this, 0, 'over', '#DDDDDD', '#CCFFCC', '#FFCC99');" onmouseout="setPointer(this, 0, 'out', '#DDDDDD', '#CCFFCC', '#FFCC99');" onmousedown="setPointer(this, 0, 'click', '#DDDDDD', '#CCFFCC', '#FFCC99');">
<td>テスト</td>
</tr>

■理想
<tr class="line_color"><td>テスト</td></tr>

A 回答 (2件)

どこかで見たような気がしたらphpMyAdminですね


IE限定でしたら以下の感じでいけそうです。
(FFではphpMyAdmin自体は動くのですが、このソース
は動かないですね・・・まぁもうちょい調べます)
ちなみに、phpMyAdminは行ごとに色換えしている
ので、一行おきにclass名をかえるか、分岐処理で
色がえした方がよいかもしれませんね

<script language="JavaScript">
function onloadFunc(){
var allTags = document.getElementsByTagName('tr');
for (var i =0;i<allTags.length;i++){
if(allTags[i].className=="line_color"){
allTags[i].number =i;
allTags[i].onmouseover =function(){setPointer(this, this.number,'over', '#DDDDDD','#CCFFCC','#FFCC99');};
allTags[i].onmouseout= function(){setPointer(this, this.number,'out', '#DDDDDD','#CCFFCC','#FFCC99');}
allTags[i].onmousedown= function(){setPointer(this, this.number,'click','#DDDDDD','#CCFFCC','#FFCC99');}
}
}
}

</script>
</head>
<body onLoad="onloadFunc()">
<table>
<tr class="line_color"><td>テスト</td></tr>
<tr class="line_color"><td>テスト</td></tr>
<tr class="line_color"><td>テスト</td></tr>
</table>
</body>
    • good
    • 0

setPointer関数がどんなものかわからないのでなんとも


いえませんが、以下のような様式でいかがでしょうか?

<html>
<head>
<script language="javascript">
function onloadFunc(){
var allTags = document.getElementsByTagName('*');
for (var i =0;i<allTags.length;i++){
if(allTags[i].className=="line_color"){
allTags[i].onmouseover=function(){setPointer(this, 0, 'over', '#DDDDDD', '#CCFFCC', '#FFCC99');}
allTags[i].onmouseout=function(){setPointer(this, 0, 'out', '#DDDDDD', '#CCFFCC', '#FFCC99');}
allTags[i].onmousedown=function(){setPointer(this, 0, 'click', '#DDDDDD', '#CCFFCC', '#FFCC99');}
}
}
}
</script>
</head>
<body onLoad="onloadFunc()">
<table>
<tr class="line_color"><td>テスト</td></tr>
</table>
</body>
</html>
    • good
    • 0
この回答へのお礼

setPointer関数はphpMyAdminというフリーソフトにあるjavascriptの関数で長くて貼り付けられそうませんでした。行に色を塗ったり塗らなかったりします。

教えていたただいた方法で
1.getElementsByTagName('*')の*をtrに
2.this, 0,をthis, i,
3.下記のようにHTMLを3行に
<tr class="line_color"><td>テスト</td></tr>
<tr class="line_color"><td>テスト</td></tr>
<tr class="line_color"><td>テスト</td></tr>

してみましたのですが、
クリックした行がオレンジ色に変わるのですが、
最初にクリックした行しか色が変わりませんでした。惜しいです。
でも、こういう書き方があるんだというのことが
わかっただけでも大変参考になりました。
ありがとうございます。

お礼日時:2006/03/22 12:18

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