私は回転式テキストジェネレーターを構築中です。ジェネレーターは、多数の配列からの文(テキスト)を結合し、それらを視覚的に「循環」させて追加します。私は今それを構築したので、ジェネレータの基本バージョンでフィドルを作成するのが最善だと思いました:
説明
基本的な仕組みは次のとおりです。
- 文は別々の配列(
Array1
、Array2
およびArray3
フィドル)で定義されます - 配列の2番目のセットが定義され、組み合わせることができる配列が含まれています(
combo0
そしてcombo1
フィドルで) - 「生成」ボタンを押すと、関数
Generate
が呼び出され、文の配列から文を視覚的に循環させます(combo0[0]
フィドル内) - この関数は、文が8回循環するまで(
var times = 8
フィドルで)ループします。 - これが行われると、関数は提供されたコールバック関数を呼び出します。このコールバックでは
Generate
、今度は2番目の配列(combo0[1]
フィドル内)で再度実行されます
コールバックの理由は、サイクリング効果が完了するのを「待つ」必要があり、次に進む必要があるためです。
問題
これは私が必要としていることを正確に実行しますが(そして、これがそれを行う方法であるかどうか非常に疑わしいという事実に加えて、それ自体をループする関数を書くときはいつも少し奇妙に感じます)、私は次の問題を抱えています:
combo
配列では、どの「文」配列を組み合わせることができるかを定義します。これは、 2つの組み合わせがある場合は正常に機能しますが、2つを超えると、問題が発生します。
Generate(combo0[0], i, function(i) { //generate from first array element of combo0, callback to generating from second array of combo0
Generate(combo0[1], i, function(i) {
$('div#status').html('Done!'); //show status
$('input#generate').removeAttr("disabled"); //enable button
});
})
combo
3つまたは4つのオプションで構成される配列の可能性に対応するために、これを再帰的に書き直す必要があります。combo
また、配列に2つ(または1つ)の配列しか含まれていない場合、おそらくこれによりスクリプトが破損します。
これは私が立ち往生しているところです。主な問題はcombo
、たとえば.each();を使用して配列をループすると、generate
関数が複数回同期的に呼び出されるため、「サイクリング」効果全体が失われることです。
与えられた配列の配列の長さを考慮に入れてさまざまなループを作成しようとしましたが、combo
今日、これまでになく多くのブラウザーがクラッシュし、何をすべきかがわかりません。