2017-10-06 52 views
0

我有一個語言下拉菜單,我嘗試提醒用戶必須先選擇一種語言,然後再進一步處理,如languageOption可以變成字符串並進入數組。但它不工作,我不明白爲什麼。我試過了:下拉選擇值並不成爲真正的價值,並在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」的一個值。所以當我在控制檯中看到時,陣列不響應,也不知道該怎麼做。我不明白爲什麼數組沒有響應。

任何幫助,我將不勝感激。 下面是我的代碼:

<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是未定義的; –

+0

intro_playlist是一堆音頻文件,相同intro_playList_chi具有不同特性,例如 「關鍵」: 「2_how_old」, 「delayAfter」:6, 「階段」: 「前奏」, 「runThrough」:真, 「隨機「:錯誤。當我嘗試查看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(「準備」),現在問題我選擇什麼語言,它沒有顯示任何內容,當我嘗試選擇英文或中文時,它會在我點擊Enter按鈕後工作,如果我沒有點擊任何內容,那麼它就不會默認英文。交互 – Johnny88520

+0

也許你最好上傳完整的HTML和Javascript(也許刪除不相關的部分),然後把鏈接放到你的問題中,如果沒有完整的上下文,將很難調試問題。使用了我多次提到的概念,並且我認爲問題在於其他地方。 –

相關問題