2017-02-13 12 views
0

ここで私が見つけたスクリプトのアイデアをいくつか修正して、テキストのいくつかのブロックを回転または反転して(訪問者はスクロールする必要がない)、ユーザーが移動するときに一時停止するようにしました。しかし、私はそれを設定しようとしているので、3つの異なるグループ(ブロックまたはdiv)の回転するテキストが同じビューに表示されます。私は各グループに異なるIDを与えましたが、スクリプトにそのレベルの振る舞いをどのように追加して、すべてが同時に動くかについてはあまりよく分かりません。私はコードの基本を示すためにjsfiddleを作成しました。最初のセット(Joan)だけが実際にテキストが反転して表示され、残りの2つ(Shelly、Valerie)は空白になっています。 3つすべてを同時に動作させる簡単な修正がjavascriptにはありますか?これが機能する multi-group text rotation jsfiddle 複数グループのjQueryテキストローテータはあまり動作しません。

function slideSwitch() { 
var $active = $('.fadein quote.active'); 
if ($active.length == 0) $active = $('.fadein quote:last'); 
var $next = $active.next().length ? $active.next() : $('.fadein quote:first'); 

$active.addClass('last-active'); 

$next.css({ 
    opacity: 0.0 
}) 
    .addClass('active') 
    .animate({ 
    opacity: 1.0 
}, 1000, function() { 
    $active.removeClass('active last-active'); 
}); 
} 

$(function() { 
    var interval = setInterval(slideSwitch, 4000); 

    $('.fadein').hover(function() { 
     clearInterval(interval); 
    }, function() { 
     interval = setInterval(slideSwitch, 4000); 
    }); 

}); 

答えて

1

、あなたはオブジェクト指向プログラミングの観点で考える必要があります。詳細は、some documentationを参照してください。

このコードを見てください。それは一人一人で働くスクロールを取得します。

var Person = function(id) { 
 
\t this.id = id; 
 
}; 
 

 
Person.prototype.slideSwitch = function(id) { 
 

 
\t let counter = 1; 
 

 
\t function getNext(){ 
 

 
\t \t //identify last active 
 
\t \t var lastActiveCounter = counter; 
 
\t \t $(id+ " quote:nth-child("+lastActiveCounter+")").addClass('last-active'); 
 

 
\t \t //increase counter or reset it to 1 
 
\t \t counter++; 
 
\t \t if (counter > $(id).children('quote').length) { 
 
\t \t \t counter=1; 
 
\t \t } 
 
\t \t //make changes to next active (since counter has changed) 
 
\t \t $(id+" quote:nth-child("+counter+")").css({ 
 
\t \t   opacity: 0.0 
 
\t \t  }) 
 
\t \t   .addClass('active') 
 
\t \t   .animate({ 
 
\t \t   opacity: 1.0 
 
\t \t  }, 1000, function() { 
 
\t \t   $(id+ " quote:nth-child("+lastActiveCounter+")").removeClass('active last-active'); 
 
\t \t  }); 
 
\t \t } 
 

 
\t return getNext; 
 
}; 
 

 
Person.prototype.start = function() { 
 
    this.interval = setInterval(this.slideSwitch(this.id), 4000); 
 
}; 
 

 
Person.prototype.clear = function(id) { 
 
\t clearInterval(this.interval); 
 
} 
 

 
$('.fadein').hover(function(){ 
 

 
\t let id=$(this).attr("id"); 
 
\t switch (id) { 
 
\t \t case "Valerie" : 
 
\t \t \t Valerie.clear(); 
 
\t \t \t break; 
 
\t \t case "Joan" : 
 
\t \t \t Joan.clear(); 
 
\t \t \t break; 
 
\t \t case "Shelly": 
 
\t \t \t Shelly.clear(); 
 
\t \t \t break; 
 
\t } 
 
}, function(){ 
 
\t let id=$(this).attr("id"); 
 
\t switch (id) { 
 
\t \t case "Valerie" : 
 
\t \t \t Valerie.start(); 
 
\t \t \t break; 
 
\t \t case "Joan" : 
 
\t \t \t Joan.start(); 
 
\t \t \t break; 
 
\t \t case "Shelly": 
 
\t \t \t Shelly.start(); 
 
\t \t \t break; 
 
\t } 
 
}); 
 

 

 
var Valerie = new Person("#Valerie"); 
 
var Joan = new Person("#Joan"); 
 
var Shelly = new Person("#Shelly"); 
 

 
Valerie.start(); 
 
Joan.start(); 
 
Shelly.start();
.fadein { 
 
    height: 150px; 
 
    position: relative; 
 
    width: 100%; /*temp*/ 
 
    float:left; 
 
} 
 

 
div quote { 
 
    text-align: left; 
 
    background-color: white; 
 
    left: 0; 
 
    opacity: 0.0; 
 
    position: absolute; 
 
    height: inherit; 
 
    width: 100%; 
 
    top: 0; 
 
    z-index: 8; 
 
    overflow: hidden; 
 
} 
 

 
caption { 
 
    text-align: left; 
 
    background-color: white; 
 
    left: 0; 
 
    opacity: 0.0; 
 
    position: absolute; 
 
    height: inherit; 
 
    width: 100%; 
 
    top: 0; 
 
    z-index: 8; 
 
    overflow: hidden; 
 
} 
 

 
div quote.active { 
 
    opacity: 1.0; 
 
    z-index:10; 
 
} 
 
div quote.last-active { 
 
    z-index: 9; 
 
}
<script src="https://code.jquery.com/jquery-2.2.3.js" integrity="sha256-laXWtGydpwqJ8JA+X9x2miwmaiKhn8tVmOVEigRNtP4=" crossorigin="anonymous"></script> 
 

 
<h3><i>Our&nbsp;Clients&nbsp;Love&nbsp;Joan!</i></h3> 
 
<div class="fadein" id="Joan"> 
 
    <quote style="font-size:16pt;">&quot;Because Joan is nice!&quot;</quote> 
 
    <quote style="font-size:16pt;">&quot;Because Joan is smart!&quot;</quote> 
 
    <quote style="font-size:16pt;">&quot;Because Joan attends to the details!&quot;</quote> 
 
</div> 
 

 
<h3><i>Our&nbsp;Clients&nbsp;Love&nbsp;Shelly!</i></h3> 
 
<div class="fadein" id="Shelly"> 
 
    <quote style="font-size:16pt;">&quot;Because Shelly is no-nonsense!&quot;</quote> 
 
    <quote style="font-size:16pt;">&quot;Because Shelly is does quit!&quot;</quote> 
 
    <quote style="font-size:16pt;">&quot;Because Shelly is on their side!&quot;</quote> 
 
</div> 
 

 
<h3><i>Our&nbsp;Clients&nbsp;Love&nbsp;Valerie!</i></h3> 
 
<div class="fadein" id="Valerie"> 
 
    <quote style="font-size:16pt;">&quot;Because Valerie listens!&quot;</quote> 
 
    <quote style="font-size:16pt;">&quot;Because Valerie is tireless!&quot;</quote> 
 
    <quote style="font-size:16pt;">&quot;Because Valerie gets it done!&quot;</quote> 
 
</div>

+0

うわー!どうもありがとうございました!私はOOPについて聞いたことがありますが、まだjavascriptやjqueryについてはほとんど理解していません。私はここにいる人の多くが、私をノブと見なすだろうと思うが、やるべきことがたくさんあるし、自分自身のような人が時間をかけて知識を分かち合い、正しい方向に向けることができたら、本当に感謝している。 –

+0

このプロジェクトの次のタスクは、これをios(ホバービットは明らかに問題です)上で動作させ、新しいスタッフをデータベースに追加するときにjavascriptで新しいIDを自動生成する方法を理解することです(テキストブロックは、顧客が残したフィードバックコメントから来る) –

+0

@phc_joe私は助けてうれしい。 javascriptで学ぶほどのことがあります。まだ勉強してる! jQueryを使用してDOMを動的に構築する場合は、配列の要素(またはJSONオブジェクト)に 'new Person'を保存することで、任意の数のスタッフとコメントで作業する方が簡単です。 – wlh

関連する問題