Hangman ゲームについては、いくつかのテーマがあります (例: 都市と動物)。
ユーザーがテーマの 1 つを選択すると、結果は選択したテーマからランダムなアイテムの 1 つになるはずです。例: ロンドンや横断歩道など。
現在、選択したテーマにはランダムな文字しかありません。
リーリー リーリー
P粉6914613012024-03-31 09:15:05
既存のコードでは、topicsEl.value
は文字列「cities」または文字列「animals」になります (これらはオプションの <select>
値であるためです)。 )。これらの は JavaScript で定義する グローバル変数ではなく、HTML 内に含まれる単なる文字列です。
次に、randomTopic()
で、文字列に配列としてアクセスすると、JavaScript はそれを、扱いたい文字列内の文字の配列として解釈します。そのため、単語からランダムな文字が得られます。"animals"[0]
は文字 a、"animals"[1]
は文字 n などとなります。
あなたが試行するのは、「city」と「animal」という名前を付けた配列変数からランダムな項目を選択することですが、関数はそれらの変数を操作しようとするのではなく、含まれている文字列に作用するだけです。 DOM内で。
したがって、アクセスしようとしている配列に<select> の文字列値を取得するステップを追加する必要があります。
window.cities または
window.animals としてアクセスできるため、次のように実行できます。 value]
これにより、アクセスしようとしている配列が返されます。ただし、ウィンドウのグローバル変数に依存するのはあまり良い習慣ではないため、別々の変数のペアを 1 つのオブジェクトに切り替えることをお勧めします。
P粉6966058332024-03-31 00:41:15
選択に基づいてリストのランダムな値を取得するのに問題があるようです。
現在、関連するトピック リストのランダムな要素ではなく、topicsEl.value
のランダムな 文字 を選択しています。
topicsEl.value
に基づいてどのリストを選択するかを決定する必要があります。これは、値がキーとして使用できる場合 (例: dictionary の場合) 動的に実現できますが、静的に行うこともできます。
ただし、静的実行では、新しいトピック リストごとに if-else-if ラダーが増加するなど、重複コード が生成されます。 リーリー
これを行うと、リストの選択が動的に抽象化され、機能がシンプルになります。前に提案したように、この目的には辞書を使用できます。たとえば、辞書の各属性がトピックのリストである場合、オプションの値は対応する属性の名前と一致する必要があります。 リーリー
このリストでランダムな項目を選択することは、現在ランダムな文字を選択する方法と似ています:
リーリー個人的には、インデックスの生成が別の関数内にある場合、このランダムな選択はより読みやすいと思います。例: ###
リーリー