onmouseover事件不适用于Firefox

时间:2011-01-13 06:30:13

标签: javascript html

我正在使用我已经提供图像的按钮。我想使用javascript在mouseover上更改图像。我的代码正在使用Chrome,但它不适用于Firefox。请帮忙。

这是代码

的Javascript

   function rolloverInit() {
for (var i=0; i<document.images.length; i++) {
    if (document.images[i].parentNode.tagName == "BUTTON") {
        setupRollover(document.images[i]);
    }
}
}
function setupRollover(thisImage) {
    thisImage.outImage = new Image();
    thisImage.outImage.src = thisImage.src;
    thisImage.onmouseout = rollOut;

thisImage.overImage = new Image();
thisImage.overImage.src = "images/" + thisImage.alt + "1.png";
thisImage.onmouseover = rollOver;


thisImage.parentNode.childImg = thisImage;
thisImage.parentNode.onblur = rollOutChild;
thisImage.parentNode.onfocus = rollOverChild;
}

function rollOut() {
    this.src = this.outImage.src;
}

function rollOver() {
    if(prevFlag == 0 && this.id==previous1)
    {
        return;
    }
    if(nextFlag == 0 && this.id==next1)
        return;

    this.src = this.overImage.src;
}

HTML

    <button id="prevLinkSimplyP" class="previous"><img src="images/previous.png" height="50" width="50" id="previousSimplyP" alt="previous"/></button>
<button id="startAgainSimplyP" class="reload"><img src="images/reload.png" height="50" width="50" id="reloadSimplyP" alt="reload" /></button>
<button id="nextLinkSimplyP" class="next" ><img src="images/next.png" height="50" width="50" id="nextSimplyP" alt="next"/></button>

4 个答案:

答案 0 :(得分:1)

您确定在Firefox中启用了JavaScript吗? http://support.mozilla.com/en-US/kb/Javascript点击此链接。

另一种方法是你可以使用jQuery。

答案 1 :(得分:1)

冒着被指责没有正确回答问题的风险,为什么不使用JQuery来解决这个问题呢?您不仅可以将代码减少到几行,而且可以在所有浏览器中使用:

http://api.jquery.com/mouseover/

这里有一个鼠标悬停/鼠标移动的例子,正如你所描述的那样。我的建议是学习JQuery,因为它可以帮助你节省大量的时间来反对使用原始JavaScript的尝试。

我还想指出,alt属性通常包含在您的图像未加载或用户代理正在加载不呈现图像的页面的情况下显示的文本。我也明白,当Google Bot无法扫描图像上的文字时,它具有SEO优势。

至于你的问题,我没有看到定义的以下函数rollOutChild和rollOverChild:

   thisImage.parentNode.onblur = rollOutChild;
   thisImage.parentNode.onfocus = rollOverChild;

答案 2 :(得分:1)

试试这个

if (document.images[i].parentNode.tagName.toLowerCase() == "button") {
    setupRollover(document.images[i]);
}

我认为您的问题可能与Firefox试图仅匹配您的代码名称大写相关。

答案 3 :(得分:0)

使用jQuery,它与所有类型的浏览器兼容。