以下のJavaScriptで、function scrollToの部分で

var element = document.getElementById(id);
がオブジェクトがありませんとエラーなります。

どう修正したらいいかわかりますか?

ブラウザはIE6です。

<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(id);
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 11:54:58
  • 終了:2006/08/24 15:02:04

回答(1件)

id:llusall No.1

llusall回答回数505ベストアンサー獲得回数612006/08/24 12:22:23

ポイント60pt

※何時間か前に「はてなのポイント送信」にて、回答を送信しました。

メールが届いているかと思いますので、詳しくは、そちらをご覧になってください。



「オブジェクトがありません」とのことですが、


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


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

特に「a123」のところはスマティでちゃんとセットされていますか?


提示したサンプルでは、「a123」のIDを持つタグのところを真ん中表示するようになっています。

<a id="a123">

<span id="a123"></span>

などが、ブラウザのソースで見たときに存在していないと駄目ですよ。


つまり、見つからないから「オブジェクトがありません」となるのです。

(「a123」のIDを持つタグが存在しないか、value="a123" が正しくセットされていないため)


以上、ご確認の程、お願いいたします。

id:hopefully

動きました。ですがまだ問題点が。

キャッシュファイルを参照するような

仕組みなのですhiddenはまずいですね。

なので再度質問をアップします。

すいません。

2006/08/24 15:01:45

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

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

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

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

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません