为什么fadeIn()函数不起作用?

时间:2014-11-26 12:28:20

标签: javascript html

我做了一个html登录页面,一旦页面加载就需要动画,我添加了一个java脚本函数来做同样的事情。但没有任何反应。这是我的代码,

 <div id="animate-wrapper" class="afterSlide">
        <h1>Login</h1>
        <form name="login" id="login" >
          <div class="row-fluid nowrap">
            <div class="input-container">
              <label>User Name:</label>
              <input id="d_username" name="d_username" autofocus="autofocus" type="text" placeholder="" autocomplete="off">
            </div>
            <div class="input-container">
              <label>Password:</label>
              <input id="d_password" name="d_password" type="password" placeholder="" autocomplete="off">
            </div>
            <div class="input-container">
              <label>&nbsp;</label>
              <button type="submit" class="btn">Login</button>
              <input type="hidden" name="locale" value="en_US">
            </div>
          </div>
          <div id="eval-users-toggle-container">            
              <div id="eval-users-toggle">
                <div>Login as an Evaluator</div>
                <div id="eval-arrow" class="closed"></div>
              </div>

          </div>
        </form>
      </div>

Javascript

<script type="text/javascript">
  $(document).ready(function(){          
      $("#login-background").fadeIn(1000, function() {
      $("#login-logo").addClass("afterSlide");
      $("#animate-wrapper").addClass("afterSlide");
      $("#d_username").focus();
      $("#login-footer").addClass("afterSlide");

    });
</script>

2 个答案:

答案 0 :(得分:3)

使用浏览器的错误控制台解决JavaScript问题。

首先,您没有关闭FadeIn()函数参数和方法本身。

编辑:

这里的第二个问题是fadeIn()的选择器。当使用&#34;#&#34;作为选择器,您按ID选择,但您没有ID为#34; login-background&#34;的元素。我猜测,一旦页面加载完毕,你想要包含表单的整个div。在这种情况下,您需要通过id&#34; animate-wrapper&#34;选择div。

将JavaScript更改为:

<script type="text/javascript">
$(document).ready(function(){   
  $("#animate-wrapper").fadeIn(1000, function() {
     $("#login-logo").addClass("afterSlide");
     $("#animate-wrapper").addClass("afterSlide");
     $("#d_username").focus();
     $("#login-footer").addClass("afterSlide");
 });
});</script>

这里的最后一个问题是fadeIn()方法试图淡入已经可见的元素,因此它没有做任何事情。您尝试淡化的元素需要具有样式元素&#34; display:none&#34;使它一开始不可见。

你可以通过为你的div添加一个带有id&#34; animate-wrapper&#34;的样式来改变它。在CSS代码的顶部,设置&#34; display:none&#34;:

#animate-wrapper {
   display:none;
}

或者只是将它添加到div本身(这是一种更丑陋的解决方案):

<div id="animate-wrapper" class="afterSlide" style="display:none">

编辑2:

如果您希望表单从左向右滑动,就像您在评论中所说的那样,您将需要稍微修改一下JavaScript。 jQuery没有一个水平滑动的方法。您将需要获取包装器的宽度,并且动画显示该元素。将fadeIn()方法的行更改为:

var wrapper_width = $("#animate-wrapper").width();
$("#animate-wrapper").width(0);
$("#animate-wrapper").show().animate({width: wrapper_width}, 1000, function() {

答案 1 :(得分:0)

正确关闭所有方法括号并创建所有使用过的ID。

请检查您是否将jquery(文件/ cdn)导入到您的代码中。如果没有,那么将cdn添加到页面

<script src="//ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 

您可以使用浏览器控制台(Shift + Ctrl + J)来检查javascript错误。

如果你是新手,那么使用firebug进行调试javascript / jquery。