Javascript功能问题

时间:2014-03-11 21:51:10

标签: javascript

您好我搜索了一些我需要的功能,我在StackOverFlow上找到了它。 问题在于我得到的所有浏览器" bug"在脚本上写着:

mouse_is_inside is not defined

但是它的定义,以及功能是否完美,并且无法摆脱该消息的任何进展?

我试过了。但我不知道如何假设:

if (typeof variable === 'undefined') {
    // variable is undefined
}

我的功能:

$(document).ready(function()
{
    $('#contactbox').hover(function(){ 
        mouse_is_inside=true; 
    }, function(){ 
        mouse_is_inside=false; 
    });

    $("body").mouseup(function(){

        if(! mouse_is_inside)  // the problem is here says not defined .
            {
            if ($.browser.msie  && parseInt($.browser.version, 10) === 7) {
                   $("#main").css('z-index','0');
                  } 
                  $('#contactb a').removeClass('cactive');
             $('#contactb a').addClass('cnoactive');
            $('#contactbox').hide()
            }
    });
});

编辑感谢我的不好,不知道它如此简单。我会勾选答案。

3 个答案:

答案 0 :(得分:2)

您只需添加以下内容:

var mouse_is_inside = false;

...就在函数内部。 E.g:

$(document).ready(function()
{
    var mouse_is_inside = false;
    // ...the rest of the code
});

因为错误是正确的:您还没有在任何地方定义它。但那是你第一次这样做:

mouse_is_inside=false;

或者这个:

mouse_is_inside=true;

...你通过掠夺The Horror of Implicit Globals的猎物来定义它。在JavaScript"松散"模式(默认值),如果您尝试读取未定义符号的值,则它为ReferenceError;但如果你到一个未定义的符号,它会创建一个全局变量(隐式)。幸运的是,从ES5开始,我们已经严格遵守了#34;模式,使两个操作都应该是错误。

答案 1 :(得分:1)

添加mouse_is_inside的声明,即

$(document).ready(function () {
    var mouse_is_inside;
    $('#contactbox').hover(function () {
        mouse_is_inside = true;
    }, function () {
        mouse_is_inside = false;
    });

    $("body").mouseup(function () {

        if (!mouse_is_inside) // the problem is here says not defined .
        {
            if ($.browser.msie && parseInt($.browser.version, 10) === 7) {
                $("#main").css('z-index', '0');
            }
            $('#contactb a').removeClass('cactive');
            $('#contactb a').addClass('cnoactive');
            $('#contactbox').hide()
        }
    });
});

答案 2 :(得分:0)

宣布:

var mouse_is_inside
文件就绪后