以前ここでお聞きした内容をもとに、自分でいろいろ考えているのですが、
どうしてもわからないので、再度おたずねします。
いくつかある音声(sound01.mp3~sound08.mp3)を、ボタンクリックによっ
てランダムに鳴らします。次に別のボタンなりリンクなりの選択肢がいくつか
あって、条件に該当すれば正解、そうでなければ不正解という判定をしたいと
思います。その際、たとえば答えの選択肢が「1」「2」「3」「4」の四つ
あり、sound01とsound02の時は「1」が正解、sound03とsound04の時は「2」
が正解…というように設定します。
ランダム音声を鳴らすボタンを作成するところまではうまくいきました。
しかし、その次の正解・不正解を照合する関数がうまくつくれません。音声を
ランダムに発生する関数randomSOUNDで発生させた乱数rを、別の関数ansCheck01
でチェックし、それが0か1だったら正解のアラート、そうでなければ不正解の
らに単純化して0のときだけ正解にしていますが、これでもうまくいきません。
変数rは別関数には受け渡すことができないのでしょうか。どう訂正すべきかを
ご指摘下さい。
また、0か1を正解にしたいときはどうすればよいのかも併せて教えていただ
けると助かります。
<SCRIPT language="javascript">
var sound = new Array(
"sound01.mp3",
"sound02.mp3",
"sound03.mp3",
"sound04.mp3",
"sound05.mp3",
"sound06.mp3",
"sound07.mp3",
"sound08.mp3"
);
var r = Math.floor(Math.random() * sound.length);
function randomSOUND() {
bgs.src = sound[r];
}
function ansCheck01(){
if(r == 0){
alert('★★正解★★');
else{
alert('------不正解------');}
</SCRIPT>
No.2ベストアンサー
- 回答日時:
>function内の変数を次の変数に引き継ぐことは無理なんでしょうか。
rを定義している関数から
例えば、function ansCheck01()を呼び出すときに
function ansCheck01(r)として置いて
ansCheck01(r)で呼び出せば、その関数の中でrが使用できます。この場合は、値の変更はできません。
例えば、
function A(){
var v=10;
B(v);
alert(v);
}
function B(v){
v=v*v;
}
の場合、関数Bにv=10が渡され100になりますけど、Aに戻った時点では、vは10です。
値を変更したいような場合はオブジェクトにして
function obj(v){
this.v=v;
}
function A(){
var v=new obj(10);
B(v);
alert(v.v);
}
function B(obj){
obj.v=obj.v*obj.v;
}
とかすると渡された関数の側で値を変更することができます。
>function外で変数rを指定すると、ページをリロードするまで変数が変わらないので、困ります。
関数外で定義してある変数は、それぞれの関数で値を変更することができます。つまり、変えられます。質問文のサンプルではそういう使い方になっていますね。
この場合、リロードすると、初期化されます。
なので、乱数で値が変わるということなのですが、
何らかのイベント(例えば、正解・不正解が終わって(終わったときとか)次の問題が始まる前とかの部分で、
r = Math.floor(Math.random() * sound.length);
とかしてやることになろうかと思います。
この回答への補足
r = Math.floor(Math.random() * sound.length);
を関数の中に組み込んで、新たに乱数を発生させる
やり方でうまくいきました。
このたびは本当にありがとうございました。
No.1
- 回答日時:
function ansCheck01(){
if(r == 0 || r == 1){
alert('★★正解★★');
} else {
alert('------不正解------');
}
}
でどうでしょう?
rの値が期待したモノと違うようなら適当なところで
alert(r);
すればいいと思いますが
回答ありがとうございます。
「(r == 0 || r == 1)」については、本と照合した上で納得できました。
しかし、前のfunction内で設定した変数rは、そのfunction内で完結して
いるようです。単純にbodyへdocument.write(r)を実行するボタンを作成
しても、エラーが起きますから。
だからと言って、function外で変数rを指定すると、ページをリロード
するまで変数が変わらないので、困ります。
function内の変数を次の変数に引き継ぐことは無理なんでしょうか。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- オンラインゲーム APEXのVCについて教えてほしい 1 2023/07/18 19:41
- JavaScript javascript作成してます。ラジオボタンで判定するコードを書いてます。 1 2023/07/18 11:03
- 英語 2つの英文の違いについて教えて下さい。 2 2022/03/30 16:33
- 音楽・動画 フリー素材の音声について 2 2023/01/26 00:20
- スピーカー・コンポ・ステレオ JBL charge5かBOSE sound link mini II special editio 1 2023/04/08 19:56
- iPod・ウォークマン・音楽プレーヤー コアな質問ですが BOSEのsound Linkミニを使用してる方、 バッテリー不具合は必然ですか? 2 2022/08/05 12:35
- Visual Basic(VBA) VBAで早押しゲームを作りたい 4 2022/05/12 13:46
- テクノ・ハウス パフュームの将来の落とし所は? 2 2023/06/04 21:17
- アプリ アプリをデスクトップに表示させる 2 2023/05/25 22:09
- 東海 静岡清水にあるsound shower arkは 前ステージだけの場合 縦座席は何列までありますか? 1 2023/03/05 19:10
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
functionから別のfunctionを実...
-
idを使わずにonclickで自身の要...
-
jQueryのプラグイン「Skitter」...
-
getElementByIdで同時多数取得
-
小数点以下を5刻みで表示
-
関数でy=g(x)のgとは何の略です...
-
処理前の「お待ちください」
-
無名関数を使うメリットは何で...
-
var exports = exports || {}; ...
-
codejump 模写コーディングgall...
-
jspからjavascriptの変数引継ぎ
-
同じIDで定義した要素の配列を...
-
文字を一文字ずつ表示
-
ASP.NETのコントロールの値をJa...
-
配列の1要素を代入した変数を使...
-
C#テキストボックスの文字を配...
-
onclickを使わずにイベント処理...
-
GASでundefinedエラーが出ます
-
このjavascriptのif文、条件式...
-
<a>タグのテキストを取得
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
functionから別のfunctionを実...
-
idを使わずにonclickで自身の要...
-
addEventListener()でリスナー...
-
クリックすると上に開くアコー...
-
関数でy=g(x)のgとは何の略です...
-
jQueryの :not() .not() が有効...
-
要素名がスペースを含む場合のj...
-
jQueryの"return false"の役割...
-
jslintのエラーについて質問
-
jqueryの変数を関数の外に出す方法
-
XMLHttpRequestでキャッシュを...
-
JAVAスクリプトで指定時間以降...
-
処理前の「お待ちください」
-
jquery 複数のメソッド
-
関数名をテキストから読み込む...
-
コードをスマートにさせたい。
-
オンマウスでテキストを表示す...
-
jQueryでのレスポンシブが綺麗...
-
getElementByIdを使用したグロ...
-
jqueryのajax()内からグローバ...
おすすめ情報