2017-06-27 6 views
1

ランダムクォートジェネレータアプリを構築しています。 JS(クリック時)にフェーディング効果を追加しようとすると、最初の見積もりに対してのみ機能します。最初のランダムな引用のみがフェードインします

var quotes = { 
 
    quote1: "Life isn’t about getting and having, it’s about giving and \ 
 
being - Kevin Kruse - ", 
 
    quote2: "Whatever the mind of man can conceive and believe, it can \ 
 
achieve - Napoleon Hill - " 
 
} 
 

 
$(document).ready(function() { 
 
    // function generator 
 
    var randQuote = function(obj) { 
 
    var keys = Object.keys(obj); 
 
    //print key values randomly 
 
    return obj[keys[Math.floor(keys.length * Math.random())]]; 
 
    }; 
 
    // function display 
 
    $("button").click(function myQuote() { 
 
    $("#demo").fadeIn(); 
 
    document.getElementById("demo").innerHTML = randQuote(quotes); 
 
    }); 
 
});
#quote { 
 
    background-color: white; 
 
    border-radius: 2%; 
 
    box-shadow: 0 0 25px #161616; 
 
} 
 

 
.paragraph { 
 
    line-break: auto; 
 
    font-family: 'Satisfy', cursive; 
 
    font-size: xx-large; 
 
    margin: 20px; 
 
    display: none; 
 
} 
 

 
.display { 
 
    background-color: #dfdfdf; 
 
} 
 

 
.title { 
 
    font-family: 'Dancing Script', cursive; 
 
    margin: 20px; 
 
} 
 

 
.btn-custom { 
 
    margin: 20px; 
 
    font-family: 'Dancing Script', cursive; 
 
    font-size: x-large; 
 
} 
 

 
.container { 
 
    position: fixed; 
 
    top: 35%; 
 
    left: 30%; 
 
    margin-top: -100px; 
 
    margin-left: -200px; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="container"> 
 
    <div class="row"> 
 
    <div class="col-md-8 col-md-offset-4"> 
 
     <h1 class="title"><strong>Random Quotes For You</strong></h1> 
 
    </div> 
 
    </div> 
 
    <div class="row"> 
 
    <div class="col-md-8 col-md-offset-2" id="quote"> 
 
     <p id="demo" class="paragraph"></p> 
 
    </div> 
 
    </div> 
 
    <div class="row"> 
 
    <div class="col-md-8 col-md-offset-5"> 
 
     <button onclick="myQuote()" class="btn btn-primary btn-custom">New Quote</button> 
 
    </div> 
 
    </div> 
 
</div>

+1

フェードアウトとフェードイン – Killuminati

+0

また、それはコンソール –

答えて

0

これは、その後、冒頭で引用してフェードそれをフェードアウトし、バックでフェードイン、その後、新しい引用と交換する必要があります。あなたはに「500」を変更することができますどのフェードタイムにも最適です。

onclick="myQuote()"も、<button>要素で取り除くことができます。

再び
$("button").click(function myQuote(){ 
    $("#demo").fadeOut(500, function(){ 
     document.getElementById("demo").innerHTML = randQuote(quotes); 
    }); 
    $("#demo").fadeIn(500); 
}); 
+0

ありがとうございます。 fadeOutなしではどうですか? –

+0

さて、テキストをフェードインしてからフェードアウトする必要があります。そうしないと、新しい引用符の間のトランジションがかなり不安定になります。私はあなたが何を求めているのかよく分かっていないと思う。 – KyleS

+0

申し訳ありません私はHTMLのクリックイベントを削除することを忘れないでください。それは不安定な動作を引き起こします。今、完璧に働いています、ありがとうございます。 –

2

あなたはすでにその要素の上にフェードインと呼ばれてきました。あなたはそれを消してからhtmlを元に戻してフェードインする必要があります。なぜそれをしなければならないのか理解したら、fadeToggleを提供し、コールバックをアニメーションで見なければならないので、フェードインで再びそれを示す。

$("button").click(function(){ 
    var flip = $("#div1"); 
    flip.fadeToggle('slow', function(){flip.html('weee').fadeToggle();}); 
}); 
+0

でエラーを引き起こしているものだ、 'onclick'属性を削除するには、コードを提供することができますしてください?! –

+2

@ Dr.YounesHenni物事を試すことを恐れたり、問題を解決できるかどうかを確認したりしないでください。 – tadman

+0

@ Dr.YounesHenni例で私の答えを編集しました。タドマンは正しいですが、これは基本的な理解であり、試行錯誤で学ぶのに役立ちますので、失敗するのを恐れないでください。 –

関連する問題