以下のJavaScriptで、alert(offsets[1]);の部分では0が

代入されて、ブラウザの中心に来ることが出来ません。
どう修正したらいいかわかりますか?

<script type="text/JavaScript">
<!--
// セルの色を変える関数
function changeColor(){
var elem = document.getElementById("hdn_plan_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 elem = document.getElementById("hdn_scroll_to");
var id = elem.value;
if(id == "")return;
scrollTo(id);
}
function scrollTo(id) {
var element = document.getElementById("hdn_scroll_to");
var offsets = cumulativeOffset(element);
alert(offsets[1]);
document.body.scrollTop = offsets[1] - (document.body.clientHeight / 2);
}
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];
}

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

回答2件)

id:llusall No.1

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

ポイント35pt

判明しました。


hdn_scroll_to は、 Input要素のhidden属性なので、位置情報が取得できないのだと思います。


なので、ゼロ


また、以下のところは、

function scrollTo(id) {

var element = document.getElementById(id);

としてください。

id:hopefully

var element = document.getElementById(id);

とするとオブジェクトがありませんとなります。

使っているブラウザはIE6です。

2006/08/24 09:45:00
id:llusall No.2

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

ポイント35pt

太字のところが、違ってるみたいですが、意図的にhdn_scroll_toにしているのでしょうか?

しかしながら、hdn_scroll_to になっていても、ゼロで取得されることはありえないので、変ですね。


<input type="hidden" id="hdn_scroll_to" value="a123" >


は、ブラウザのソースで見たときに存在しますでしょうか?

もし存在するのであれば、cumulativeOffset 関数がおかしいです。

prototype.js というライブラリから抜き出した関数なので、ちゃんと動くと思うのですが・・・。


また、お使いのブラウザは何ですか?

当方、IE6とFireFox1.5 で動作確認とれています。



function scrollTo(id) {

    var element = document.getElementById("hdn_scroll_to");

    alert(element.value); // これを追加したら正常にアラート出ますか?

    var offsets = cumulativeOffset(element);

    alert(offsets[1]);

    document.body.scrollTop = offsets[1] - (document.body.clientHeight / 2);

}


正?

function scrollTo(id) {

    var element = document.getElementById(id);

    var offsets = cumulativeOffset(element);

    document.body.scrollTop = offsets[1] - (document.body.clientHeight / 2);

}

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

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

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

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

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