dポイントプレゼントキャンペーン実施中!

【javascript】ロールオーバーと画像自動切換えがバッティングして、ロールオーバーがきいていません。

javascriptは該当の動作がどれかというのが分かる程度で、書く事も修正する事もできません。
ロールオーバーが正常に動いていたページに画像自動切換えのスクリプトを設置したところ、ロールオーバーが動かなくなりました。
ページの遷移に問題はないのですが、他ページでは出来ているので何とかしたいと思っています。どうかお助け下さい。

≪ロールオーバー≫
function initRollovers() {
if (!document.getElementById) return

var aPreLoad = new Array();
var sTempSrc;
var aImages = document.getElementsByTagName('img');

for (var i = 0; i < aImages.length; i++) {
if (aImages[i].className == 'imgover') {
var src = aImages[i].getAttribute('src');
var ftype = src.substring(src.lastIndexOf('.'), src.length);
var hsrc = src.replace(ftype, '_o'+ftype);

aImages[i].setAttribute('hsrc', hsrc);

aPreLoad[i] = new Image();
aPreLoad[i].src = hsrc;

aImages[i].onmouseover = function() {
sTempSrc = this.getAttribute('src');
this.setAttribute('src', this.getAttribute('hsrc'));
}

aImages[i].onmouseout = function() {
if (!sTempSrc) sTempSrc = this.getAttribute('src').replace('_o'+ftype, ftype);
this.setAttribute('src', sTempSrc);
}
}
}
}


≪画像切り替え≫
window.onload = function(){
var num = 1;
setInterval(function(){
document.getElementById('link' + num).style.display = 'none';
num = document.getElementById('link' + (num+1))? ++num : 1;
document.getElementById('link' + num).style.display = 'block';
},7500);
}

A 回答 (2件)

全体がどのような記述をしているのか不明ですが、ご提示の通りだとすれば、initRollovers()が実行されていないので、ロールオーバーの設定がされていないということでは?



≪画像切り替え≫のwindow.onloadの最後に( } の手前)に1行追加して
 initRollovers();
を入れてあげればよさそうですが…

>他ページでは出来ているので
そのページはどこかでinitRollovers()を呼び出すようになっていると思うのですが…
    • good
    • 0
この回答へのお礼

早速のご回答ありがとうございました!
こちらで正常に動くようになりました。

内容を拝見しても何が何だかサッパリわからない所が悔しいです。。。
もっと精進します。

ありがとうございました。

お礼日時:2010/04/27 17:19

これはロールオーバーが利かないのではなく、利いているのに自動切り替えが常に動いているために書き換えられてしまうということではないでしょうか。



window.onload = function(){
var num = 1;
setInterval(function(){



window.onload = auto_roll();
function auto_roll(){
var num = 1;
timerID = setInterval(function(){

として、functionを独立させ、タイマーのID番号を控えておきます。

aImages[i].onmouseover = function() {
の次の行に
setTimeout(timerID);
を追加し、タイマーを止めます。

aImages[i].onmouseout = function() {
の次の行に
auto_roll();
を追加し、タイマーを呼び出します。
    • good
    • 0
この回答へのお礼

早速のご回答ありがとうございます!
試してみましたが、うまく動作しませんでした。。。
せっかく書いていただいたのにごめんなさい。
ありがとうございました!

お礼日時:2010/04/27 17:21

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!