複数の場所の背景を設定したいのですが
どうしたらいいのでしょうか?
<table>
<tr><td ID=123>1</td><td ID=123>2</td></tr>
<tr><td>3</td><td>4</td></tr>
</table>
<script type="text/JavaScript">
<!--
var test_id = getEntry();
var test_id_list = entryParser(test_id);
for (i in test_id_list){
var obj = document.getElementById(test_id_list[i]);
if (obj != null){
obj.style.backgroundColor="#FFCC66";
}
}
function linkExtend(_this){
if (test_id != ''){
_this.href += '&test_id=' + test_id;
}
}
function entryParser(){
var plainEntry = getEntry();
return entry.match(/(\d+)/g);
}
function getEntry(){
var url = document.URL;
if (url.match(/\/test_id\/([\d_]+)/)){
return RegExp.$1;
} else if (url.match(/[&|\?]test_id=([\d_]+)/)){
return RegExp.$1;
}
return '';
}
//-->
こちらでいかがでしょうか?
以下、ソースより抜粋しています。
<html>
<body>
<table id="tbl">
<tr><td ID=123>1</td><td ID=123>2</td></tr>
<tr><td>3</td><td>4</td></tr>
</table>
</body>
<script type="text/JavaScript">
<!--
var test_id = getEntry();
var test_id_list = entryParser(test_id);
if (test_id_list.length==1 && test_id=="123"){
// test_idが 123 だけで来た場合、テーブル全体の背景を設定
document.all.tbl.style.backgroundColor="#FFCC66";
}else{
for (i in test_id_list){
var obj = document.getElementById(test_id_list[i]);
if (obj != null){
obj.style.backgroundColor="#FFCC66";
}
}
}
的外れだったらごめんなさい。
document.getElementById(ID) で取得する際、IDが一意になっていないため、うまく取れていないのだと思います。
以下ではいかがでしょうか?
<html>
<body>
<table>
<tr>
<td id=123>1</td>
<td id=123>2</td>
</tr>
<tr>
<td>3</td>
<td>4</td>
</tr>
</table>
<script>
// TDエレメントを全て取得
var objTds = document.getElementsByTagName("td");
// 対象のID値を取得
var targetId = getXX();
// 全TDエレメント繰り返し
for (i = 0; i < objTds.length; i++) {
objTd = objTds[i];
// ID属性が対象のIDの場合、背景を設定
if (objTd.id == targetId) {
objTd.style.backgroundColor = "#FFCC66";
}
}
// 対象のID値を取得
function getXX(){
// 実際はURLから取得???
return "123";
}
</script>
</body>
</html>
すいません。test_IDは固定ではありません。