2017-10-06 12 views
0

言語ドロップダウンがあり、languageOptionが文字列になり、配列に入るようなことをする前に1つの言語を選択する必要があることをユーザーに警告しようとします。しかし、それは動作していないと私はなぜ理解していない。私は試した:ドロップダウン選択値が実際の値にならず、JavaScriptで動作しない

alert("You didn't choose any language."); 
    console.alert("You didn't choose any language."); 
    console.log("You didn't choose any language."); 

しかし、それらはすべて動作しません。

そして私は、私は

<option value="1" selected>English (American)</option> 

を作るが、その後値=「1」変数「languageOption」の値になっていませんこの問題を解決する別の方法を、と思いました。したがって、配列は応答せず、コンソールで見るときに何をすべきかわからない。なぜアレイが応答していないのか分かりません。

ありがとうございました。あなたが文書をロードした後のonchange機能を割り当てる必要が

<select id="languageSelection" style=display:none> 
     <option value="">Choose a language</option> 
     <option value="1">English (American)</option> 
     <option value="2">Chinese (Mandarin)</option> 
     <option value="3">Japanese</option> 
</select> 

    var audioSrc = "sound/" 
    var audioType = ".wav"; 

    // default number of random question, if user this used the dropdown 
    var default_numFollowUp = 4; 
    // default delai (seconds) between random questions, if user this used the dropdown 
    var default_secFollowUp = 10; 

    // Create the audio element 
    var audioElement = document.createElement('audio'); 

    var endingArr = []; 
    var runThroughArr = []; 
    var randomArr = []; 

    var languageOption = parseInt($("#languageSelection").val()); 

    $("#languageSelection").on("change", function(){ 

     languageOption = $(this).val(); // Make languageOption value be string 

     //if(languageOption.length==0){languageOption=1;} 

     console.log("langugeOption is " + languageOption); 

     console.log("Language changed to: "+ $(this).find("option").eq($(this)[0].selectedIndex).text() + " (Index: "+languageOption+")"); 

     console.log(typeof(languageOption)); // Outputs string 

     endingArr = []; 
     runThroughArr = []; 
     randomArr = []; 

     if(languageOption === ""){ 
      alert("You didn't choose any language."); 
      console.alert("You didn't choose any language."); 
      console.log("You didn't choose any language."); 
     } 
     else if(languageOption === "1"){ 
      console.log("English"); 
      for(i = 0; i < intro_playList.length; i++){ 
       if(intro_playList[i].stage === "ending"){ endingArr.push(i); } 
       if(intro_playList[i].runThrough){ runThroughArr.push(i); } 
       if(intro_playList[i].random){ randomArr.push(i); } 
      } 
     } 
     else if (languageOption === "2"){ 
      console.log("Chinese"); 
      for(i = 0; i < intro_playList_chi.length; i++){ 
       if(intro_playList_chi[i].stage === "ending"){ endingArr.push(i); } 
       if(intro_playList_chi[i].runThrough){ runThroughArr.push(i); } 
       if(intro_playList_chi[i].random){ randomArr.push(i); } 
      } 
     } 
    }); 
+0

値は 'intro_playlist'ですか? 'intro_playlist is undefined'というコードを試したときに、コンソールメッセージと警告が表示されます。 "2_how_old"、 "delayAfter":6、 "舞台": "イントロ"、 "runThrough":真、 「ランダム –

+0

intro_playlistは、オーディオファイルの束は、そのような "キー" などの異なる特性を有するintro_playList_chiと同じです":偽です。 languageOptionを見ようとすると文字列型です。 – Johnny88520

+0

英語または中国語を選択しようとすると、[Enter]ボタンをクリックすると動作します。何もクリックしなければ、デフォルトの英語にはなりません。私はそれがユーザーの操作を必要とするのだろうか – Johnny88520

答えて

0

: 以下は私のコードです。 jQueryを使って、このようにすることができます

var languageOption; 
$(document).on("ready", function() { 
    languageOption = $("#languageSelection").val(); 
    $("#languageSelection").on("change", function() { 
     your code here ... 
    } 
} 
+0

返事ありがとうございますが、それでもまだ動作していません:(他のアイデア?)もし私が$(document).on( "ready")をしたら、何も表示されません。また、英語や中国語を選択しようとすると、Enterボタンをクリックした後に動作します。何もクリックしなければ、デフォルトの英語にはなりません。そのための対話 – Johnny88520

+0

完全なHTMLとJavascriptをアップロードして(おそらく無関係な部分を削除して)、あなたの質問にリンクを貼る方が良いかもしれません。完全なコンテキストがなければ、問題をデバッグすることは難しいでしょう。私が何回も言及したコンセプトを使用し、問題はどこか別のところにあると思う。 –

関連する問題