http://q.hatena.ne.jp/1156246160
回答されているjavascriptでURLがhttp://aaaa.bb.cc.co.jp/test/test_id=123_321&scroll_to=a123
の場合に
文字:7
エラー:オブジェクトがありません
コード:0
となってしまいます。どうしたらいいでしょうか?
http://aaaa.bb.cc.co.jp/test/?test_id=123_321&scroll_to=a123
または、
http://aaaa.bb.cc.co.jp/test/hoge.html?test_id=123_321&scroll_to=a123
のようになるのではないでしょうか?
毎度、力が及ばず済みません。
URLに「?」が無いとなると、JavaScript での引数の取得は難しいようですね。
サーバ側の処理をつかってらっしゃるとのことですので、
次の様にご提案します。
スマーティとかPHPは守備範囲外の為、詳細は判らなくてすみませんが、
赤字に該当する箇所をスマーティ(サーバ側)でセットしてあげれば良いかと思います。
1.前ページからのGETによる?引数をスマーティで取得
2.当ページの赤字箇所にスマーティで文字をセット
以上、でどうでしょうか?
<html>
<body onload="ajustCenter();changeColor();">
<br><br><br><br><br><br><br><br><br><br><br><br><br><br>
<br><br><br><br><br><br><br><br><br><br><br><br><br><br>
<br><br><br><br><br><br><br><br><br><br><br><br><br><br>
<br><br><br><br><br><br><br><br><br><br><br><br><br><br>
<br><br><br><br><br><br><br><br><br><br><br><br><br><br>
<br><br><br><br><br><br><br><br><br><br><br><br><br><br>
<table>
<tr><td id=123><a id="a123">1</td><td id=123>2</td></tr>
<tr><td id=231><a id="a231">3</td><td id=231>4</td></tr>
<tr><td id=321><a id="a321">5</td><td id=321>6</td></tr>
</table>
<br><br><br><br><br><br><br><br><br><br><br><br><br><br>
<br><br><br><br><br><br><br><br><br><br><br><br><br><br>
<br><br><br><br><br><br><br><br><br><br><br><br><br><br>
<br><br><br><br><br><br><br><br><br><br><br><br><br><br>
<br><br><br><br><br><br><br><br><br><br><br><br><br><br>
<br><br><br><br><br><br><br><br><br><br><br><br><br><br>
<input type="hidden" id="hdn_test_id" value="123_321" >
<input type="hidden" id="hdn_scroll_to" value="a123" >
</body>
</html>
<script type="text/JavaScript">
<!--
// セルの色を変える関数
function changeColor(){
// var oSearch = new CLocationSearch(location.search);
// var id = oSearch.item('test_id');
////var id;
////var ls = location.search;
////if (ls.match(/\/test_id\/([\d_]+)/)){
//// id = RegExp.$1;
////} else if (ls.match(/[&|\?]test_id=([\d_]+)/)){
//// id = RegExp.$1;
////}
var elem = document.getElementById("hdn_test_id");
var id = elem.value;
if(id == "")return;
var aryId = id.split("_");
var tagname = "TD";
for (var i=0; i < document.getElementsByTagName(tagname).length; i++) {
var elem = document.getElementsByTagName(tagname)[i];
for (var j=0; j < aryId.length; j++) {
if(elem.id==aryId[j]){
elem.style.backgroundColor="#D7FDFF";
}
}
}
}
// センター位置に調整する関数
function ajustCenter(){
// var oSearch = new CLocationSearch(location.search);
// var id = oSearch.item('scroll_to');
var elem = document.getElementById("hdn_scroll_to");
var id = elem.value;
if(id == "")return;
scrollTo(id);
}
function scrollTo(id) {
var element = document.getElementById(id);
var offsets = cumulativeOffset(element);
document.body.scrollTop = offsets[1] - (document.body.clientHeight / 2);
}
// 参考 prototype.js
// http://www.imgsrc.co.jp/~kuriyama/prototype/prototype.js.htm...
function cumulativeOffset(element) {
var valueT = 0, valueL = 0;
do {
valueT += element.offsetTop || 0;
valueL += element.offsetLeft || 0;
element = element.offsetParent;
} while (element);
return [valueL, valueT];
}
//-->
</script>
ならないんですよ。smartyなので。
すいません。