Javascript Mootools:如何使用';鼠标器';和';mouseleave';

Javascript Mootools:如何使用';鼠标器';和';mouseleave';,javascript,events,mootools,delay,mouseenter,Javascript,Events,Mootools,Delay,Mouseenter,我是javascript和Mootol的新手,我有一个关于Mootools的延迟和事件处理的问题 我的目标:菜单出现在主位置,然后在一定时间后移动到辅助位置并切换不透明度,然后在鼠标上,它以完全不透明度重新出现在主位置,在鼠标上,它返回到辅助位置 我已经讨论这个问题有一段时间了,我读了很多演示和问题,但我没有抓住要点。。。我在mouseenter mouseleave上遇到了问题(它有一个延迟,因此如果我在一段时间后将鼠标放在刚加载的菜单上,菜单就会转到它的第二个位置),或者如果我只是将鼠标移入

我是javascript和Mootol的新手,我有一个关于Mootools的延迟和事件处理的问题

我的目标:菜单出现在主位置,然后在一定时间后移动到辅助位置并切换不透明度,然后在鼠标上,它以完全不透明度重新出现在主位置,在鼠标上,它返回到辅助位置

我已经讨论这个问题有一段时间了,我读了很多演示和问题,但我没有抓住要点。。。我在mouseenter mouseleave上遇到了问题(它有一个延迟,因此如果我在一段时间后将鼠标放在刚加载的菜单上,菜单就会转到它的第二个位置),或者如果我只是将鼠标移入和移出菜单,就会产生完全的混乱

代码如下:

window.addEvent('domready', function(){
var el = $('menu'),
    color = el.getStyle('backgroundColor');


        // Morphs to secondary style
    var menuHide = function(){
    this.morph({'background-color': '#000000',
   'opacity': 0.6,'margin-top': -43}) };
    menuHide.delay(5000, el);



    $('menu').set('duration', 100).addEvents({

        mouseenter: function(){ 
            // Morphs back to the primary style
                this.morph({
                'opacity': 1.0,
                'background-color': '#B51000',
                'margin-top': 0
            });
        },
        mouseleave: function(){

            // Morphs back to the secondary style
            this.store("timer", (function(){
                            this.morph({
                            'opacity': 0.6,
                            'background-color': '#000000',
                            'margin-top': -43
                            });
            }).delay(2000,this));
        }

    });

你能帮帮我吗?我绝望了

如果我没弄错的话,您缺少的是计时器id,然后在开始新的转换之前清除它

这样的东西可能会奏效(未经测试):


我设法把我的代码和你的代码混合在一起修复了它,我知道我需要一个计时器

window.addEvent('domready', function() {
var myMorph = new Fx.Morph($('menu'), {
    duration: 1000,
    link: 'cancel'
});
var timer;
$('menu').addEvents({
    'domready': function() {
        var myDelay1 = function() {
            myMorph.start({
                'opacity': 0.6,
                'background-color': '#000000',
                'margin-top': -43
            });
        };
        timer = myDelay1.delay(5000);
    },
    mouseenter: function() {
        clearTimeout(timer);
        myMorph.start({
            'opacity': 1.0,
            'background-color': '#B51000',
            'margin-top': 0
        });
    },
    mouseleave: function() {
        var myDelay1 = function() {
            myMorph.start({
                'opacity': 0.6,
                'background-color': '#000000',
                'margin-top': -43
            });
        };
        timer = myDelay1.delay(2000);
    }
});});
这不是Java的问题,而是JavaScript,两者之间有很大的区别。请删除Java标记并添加Javascript标记。
window.addEvent('domready', function() {
var myMorph = new Fx.Morph($('menu'), {
    duration: 1000,
    link: 'cancel'
});
var timer;
$('menu').addEvents({
    'domready': function() {
        var myDelay1 = function() {
            myMorph.start({
                'opacity': 0.6,
                'background-color': '#000000',
                'margin-top': -43
            });
        };
        timer = myDelay1.delay(5000);
    },
    mouseenter: function() {
        clearTimeout(timer);
        myMorph.start({
            'opacity': 1.0,
            'background-color': '#B51000',
            'margin-top': 0
        });
    },
    mouseleave: function() {
        var myDelay1 = function() {
            myMorph.start({
                'opacity': 0.6,
                'background-color': '#000000',
                'margin-top': -43
            });
        };
        timer = myDelay1.delay(2000);
    }
});});