0

我正在做涉及使用 javascript 的作业。我的部分家庭作业是使用事件处理程序 onmouseout 和 onmouseouver。当用户将鼠标悬停在特定的 div 元素上时应该发生什么,字体大小增长 25%,当用户将鼠标移出 div 元素时,字体大小恢复正常。我的问题是,是否可以将 onmouseover 函数和 onmouseout 函数合并到一个函数中?不知何故,这就是我的老师希望我们做的。到目前为止,我已经开始了。

function FontSize(x)
{
    x.style.fonstSize = large;
}

我还认为这不是使字体大 25% 的正确代码,但我不确定如何在此函数中真正合并 onmouseout。

4

5 回答 5

3

作为一名教师,我 99% 确信,教师所说的“一个函数”是指一个用于更改字体大小的通用函数,而不是一个使用条件语句向后工作并确定是否应该执行 onmouseout 或鼠标悬停。

您的脚本应包含:

function resize(elem, percent) { elem.style.fontSize = percent; }

您的 HTML 应包含:

<div onmouseover="resize(this, '125%')" onmouseout="resize(this, '100%')"
Text within div..
</div>

注意:像这里这样的情况,正是 JavaScript 使用关键字“this”的原因——以避免我们需要使用复杂的 document.getElementById() 语句。

于 2013-04-15T19:17:24.177 回答
2

您可以使用“%”属性来控制字体大小,如此处所述使用以下代码。

 document.getElementById("div1").onmouseover = function() {        
            document.getElementById("div1").style.fontSize  = "125%"
                        };

 document.getElementById("div1").onmouseout = function() {        
            document.getElementById("div1").style.fontSize  = "100%";
                        };

这是工作的jsfiddle:http: //jsfiddle.net/LxhdU/

于 2013-04-15T19:13:10.137 回答
1

您可能不需要显式调用元素上的两个事件,而是您创建的扩展将执行此操作。扩展Element的原型。Jquery 也与此类似。

参考原型

见小提琴:- http://jsfiddle.net/4fs7V/

Element.prototype.hover= function( fnOver, fnOut ) {

    this.onmouseover=fnOver;
    this.onmouseout=fnOut || fnOver;
        return this;
    };


document.getElementById('test').hover(function(){
                                         //do your mouseover stuff
                                                },
                                     function(){
                                           //do your mouseout stuff
                                     });

更新

同样也可以通过一个功能来实现:-

悬停我

.largeFont {
    font-size:125%;
}

Element.prototype.hover = function (fnOver, fnOut) {
    this.onmouseover = fnOver;
    this.onmouseout = fnOut || fnOver;
    return this;
};

document.getElementById('test').hover(changeMe);

function changeMe()
{
    if(this.hasAttribute('class'))
    {
        this.removeAttribute('class');
    }
    else
    {
         this.setAttribute('class', 'largeFont');
    }
}
于 2013-04-15T19:01:18.547 回答
1

我会做一些简单的事情,如下所示。large和值可以是您需要的small任何值以使字体大小起作用,或者它们可以是您在之前的代码中定义的变量。

演示:http: //jsfiddle.net/lucuma/EAbYn/

 function doHover(e) {
    if (e.type=='mouseover') {
          this.style.fontSize = "large";   
    } else {

          this.style.fontSize = "small";  
    }
}

var el = document.getElementById('myelement')
el.onmouseout =doHover;
el.onmouseover=doHover;
于 2013-04-15T19:11:48.870 回答
1

是的你可以。在两个事件上调用相同的函数,并传递一个参数来指示字体大小是应该增加还是减少。

ChangeFontSize = function(element, shouldIncreaseFontsize)
{
    var small=14;
    var large = small * 1.25;

    if(shouldIncreaseFontsize) {
         element.style.fontSize = large + "px";
    }
    else {
         element.style.fontSize = small + "px";
    }

}

http://jsfiddle.net/TMHbW/1/

于 2013-04-15T18:58:13.380 回答