以下のURLで

http://q.hatena.ne.jp/1156246160
回答されているjavascriptでURLがhttp://aaaa.bb.cc.co.jp/test/test_id=123_321&scroll_to=a123
の場合に
文字:7
エラー:オブジェクトがありません
コード:0
となってしまいます。どうしたらいいでしょうか?

回答の条件
  • 1人2回まで
  • 登録:
  • 終了:2006/08/24 10:46:55
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答2件)

id:llusall No.1

回答回数505ベストアンサー獲得回数61

ポイント35pt

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

のようになるのではないでしょうか?

id:hopefully

ならないんですよ。smartyなので。

すいません。

2006/08/23 10:51:45
id:llusall No.2

回答回数505ベストアンサー獲得回数61

ポイント35pt

毎度、力が及ばず済みません。

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>

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません