2014-03-11 4 views
0

Привет, я просмотрел некоторые функции, которые мне нужны, и я нашел их здесь на StackOverFlow. Проблемы во всех браузерах я получаю «ошибку» по сценарию, который говорит:Проблема с функцией Javascript

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() 
      } 
    }); 
}); 

EDIT спасибо мой плохой, не знал его так легко. я поставлю галочку.

+0

+1 "StackOverFlaw" –

+0

Ха-ха, я изменю жаль плохой mispell. – Ravg

+1

Это заставило меня рассмеяться :) –

ответ

2

Все, что вам нужно, это добавить следующую строку:

var mouse_is_inside = false; 

... только внутри функции. Например:

$(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 мы имеем «строгий» режим, который делает обе операции ошибками, которые они должны быть.

+0

Но переменная глобальная не так, извините, но я заметил, что – PlaceUserNameHere

+0

@PlaceUserNameHere: Да, это - * неявный * глобальный, потому что он нигде не определен, но ОП назначает ему. –

+0

Спасибо, ребята, я плохо работаю. – Ravg

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() 
     } 
    }); 
}); 
+1

спасибо, работая отлично, я плохой .. – Ravg

0

просто объявить:

var mouse_is_inside 

сразу после документа готового

Смежные вопросы