これは本当にばかげた質問ですが、私は外国のアルファベットを学ぶための簡単なアプリを作ろうとしています。ボタンをクリックして値をリセットするコードが必要なので、ページをリロードする必要はありません。Javascript異なるボタンをクリックして作業するネストされた関数?
ボタンをクリックして音を聞いて文字をクリックし、それがサウンドに対応しているかどうかを確認し、そうであれば "bravo"メッセージを書き込み、処理を続行することです。
私は、割り当てられたサウンドをランダムにしたいので「ボタンのクリックでプロセスをリセットする」以外はすべて行いました。グローバル変数にすると、クリック時にリセットできません「次の」ボタンを押しても、それを関数に入れると、ユーザーが別の関数で正しい文字を選択したかどうかを確認するためにその値を使用することはできません。
私のhtml:
<button type="button" onclick="dodeli()">Assign</button> <!--Assigns the random value-->
<input type="text" id="upisi"> <!--Text field to write the answer in-->
<button class="soundBt" onclick="zadaj()">Sound</button> <!-- Plays the sound of a letter -->
<button class="soundBt" onclick="slovoA()">A</button> <!-- Writes the letter "A" and plays its sound-->
<button class="soundBt" onclick="slovoB()">Б</button> <!-- Writes the letter "B" and plays its sound -->
<button class="soundBt" onclick="proveri()">Check</button><!-- Checks if it's the correct letter -->
<button class="soundBt" onclick="dalje()">Next</button><!-- Starts the cicle again -->
<audio id="audio" src=""></audio><!-- Audio of a letter when "sound" is clicked -->
<audio id="audioSlova" src=""><!-- Audio of a letter when the specific letter is clicked -->
私のjavascript:
//variables that I need to reset on click of the "next" button
var array = ["a.ogv", "b.ogv", "v.ogv"];
var random =Math.floor(Math.random() * 3);
var rand = array[random];
var sound = document.getElementById('audio');
var text = document.getElementById("upisi");
//function that ties the random source to the audio
function dodeli(){
sound.src = rand;
}
//function that plays the sound of a letter that user needs to guess
function zadaj(){
sound.play();
}
//plays the sound of a clicked letter and writes it into the text field
var soundLetter = document.getElementById('audioSlova');
function slovoA(){
soundLetter.src = "a.ogv"
soundLetter.play();
text.value = "a.ogv";
}
function slovoB(){
soundLetter.src = "b.ogv"
soundLetter.play();
text.value = "b.ogv";
}
//checks if it is the same as the assigned value
function proveri(){
if(text.value == rand){
alert("bravo");
}else{
alert("try again!");
}
}
私は私が考えることができるすべてのものを試してみました。私が "次へ"ボタンのクリックでリセットする必要がある値を設定する関数で "return"を使用しようとすると、呼び出されるたびにリセットされ、グローバル変数を避けるためにそのモジュールを使用しようとしました(私は名前を今思い出すことができません)しかし、それは同じ問題です。
p.s.私はいくつかの変数名を英語に変更して読みやすくしました。何かが間違っているように見えるかもしれませんが、私のコードはうまく動作しますが、唯一の問題はクリックして読み込む方法がわからないことですページ全体をリロードする必要はありません。
私は数日のためにインターネット接続を持っていなかったので、ありがとうございました!それは素晴らしい、そして詳細な答えです。私が少し問題を抱えているのは、 "turn"変数の増分だけです。私は毎回違う価値を得ることができると思っていますよね?だから配列 "list"と "answ"に移動しますか?それが終わりに達するとどうなりますか?それとも、大きな時間を増やしているのか分かりませんか? – ProgrammingNewbie
* "..."ターン変数をインクリメントするとき、毎回異なる値を得るようになっていると思いますよね? "* – zer00ne
*" ... "ターン変数のインクリメント;私たちが毎回違う価値を得られるように推測していますよね? " * "それで配列" list "と" answ "を移動しますか?" *>肯定的です。 * "それが終わりになると何が起こるのですか?" * 26で停止するのを忘れて、限界を追加して、更新を通知します* "またはそれのポイントが足りなくなっていますか?その要約は正確で正確ですが、これで問題が解決しない場合は私に通知してください。すぐに26にキャップが更新され、ATMが働いています。 – zer00ne