代入されて、ブラウザの中心に来ることが出来ません。
どう修正したらいいかわかりますか?
<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];
}
判明しました。
hdn_scroll_to は、 Input要素のhidden属性なので、位置情報が取得できないのだと思います。
なので、ゼロ
また、以下のところは、
function scrollTo(id) {
var element = document.getElementById(id);
としてください。
太字のところが、違ってるみたいですが、意図的に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);
}
var element = document.getElementById(id);
とするとオブジェクトがありませんとなります。
使っているブラウザはIE6です。