使用javascript中的if else语句设置超时

时间:2015-05-12 17:19:09

标签: javascript angularjs if-statement timeout

我有一个鼠标悬停和鼠标输出时运行的功能。鼠标输出时我需要在运行前等待一秒钟的功能。有没有办法在if else语句上设置超时以使其工作?

HTML:

<div ng-mouseover="menu()" ng-mouseout="menu()"><img src="images/headermenubutton.png" style="height: 73px; width: auto; position: absolute; left: 230px; z-index: 2000;"></div>
<div class="menu" ng-mouseover="menu()" ng-mouseout="menu()" ng-show="dropdown_menu" ng-cloak>
    <a href="about_us.html"><h2 class="lighter" style="padding-top: 10px;">ABOUT US</h2></a>
    <a href="contact_us.html"><h2 class="lighter">CONTACT US</h2></a>
    <a href="/blog"><h2 class="lighter">BLOG</h2></a>
    <a href="contact_us.html#faq"><h2 class="lighter">FAQ'S</h2></a>
</div>

JS:

$scope.menu = function() {
    if($scope.dropdown_menu) {
        setTimeout(function(){ $scope.dropdown_menu = false; }, 1000);
    } else {
        $scope.dropdown_menu = true;
    }
};

1 个答案:

答案 0 :(得分:2)

根据建议,尝试$timeout有角度的

包装器

使用了$timeout的解决方案:

$scope.menu = function () {
    if ($scope.dropdown_menu) {
        $timeout(function () {
            $scope.dropdown_menu = false;
        }, 1000);
    } else {
        $scope.dropdown_menu = true;
    }
};

https://jsfiddle.net/Lx41yy47/