2016-07-17 10 views
0

以下は、私がGoogleアカウント作成ページから誕生月の選択をランダムに自動化するためのコードのスニペットです。Javascript [Googleアカウント作成ページ]からドロップダウンメニューから値を選択

ヶ月がドロップダウンリストを介して生成し、appropiate IDのすなわち1 = 1月2日= 2月など

を持っている私は運で(1月、2月など)実際の数ヶ月にmyarrayの中に私の値を変更しようとしています同じように。私が間違っている

?それとも、これはどうしたの?

ご協力いただきますようお願い申し上げます。

//Get select object 
 
var objSelect = document.getElementById("BirthMonth"); 
 
var myArray = ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12']; 
 
var rand = myArray[Math.floor(Math.random() * myArray.length)]; 
 

 
//Set selected 
 
setSelectedValue(objSelect, "myArray"); 
 

 
function setSelectedValue(selectObj, valueToSet) { 
 
    for (var i = 0; i < selectObj.options.length; i++) { 
 
     if (selectObj.options[i].text== valueToSet) { 
 
      selectObj.options[i].selected = true; 
 
      return; 
 
     } 
 
    } 
 
}

答えて

0
var objSelect = document.getElementById("BirthMonth"); 

objSelect DOM要素は、使用しているようにアクセスするには、何のoptions配列を持っていません。 :9その後、:a - - :c

var myArray = ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12']; 

月の要素は、実際の値:1とIDを持ちます。

選択した月の値を含む非表示フィールドはHiddenBirthMonthです。 monthフィールドのキャプション要素には、IDが:0であり、対応する月のキャプションに設定する必要があります。 month要素のtextContentプロパティから取得できます。

迷惑なビットは、ドロップダウンリストをクリックするまで個々の月要素がレンダリングされないという事実です。この問題を回避するには、続行する前にmousedownイベントを2回すばやくトリガーする関数を作成しました。

作業溶液:

function setRandomBirthMonth() { 
    var hiddenMonthField = document.getElementById("HiddenBirthMonth"); 
    var selectedMonthCaption = document.getElementById(":0"); 
    var monthIds = [':1', ':2', ':3', ':4', ':5', ':6', ':7', ':8', ':9', ':a', ':b', ':c']; 
    var randomMonth = monthIds[Math.floor(Math.random() * monthIds.length)]; 

    // month options don't render until a 'mousedown' event, so let's simulate it 
    if (document.getElementById(randomMonth) == null) forceRenderOfMonths(); 
    var selectedMonth = document.getElementById(randomMonth); 

    hiddenMonthField.value = randomMonth; 
    selectedMonthCaption.setAttribute("aria-posinset", randomMonth); 
    selectedMonthCaption.textContent = selectedMonth.textContent; 

    function forceRenderOfMonths() { 
     var select = document.getElementsByClassName("jfk-select")[0]; 
     var clickEvent = document.createEvent('MouseEvents'); 

     clickEvent.initEvent("mousedown", true, true); 
     select.dispatchEvent(clickEvent); 
     clickEvent.initEvent("mousedown", true, true); 
     select.dispatchEvent(clickEvent); 
    } 
} 

setRandomBirthMonth(); 
+0

こんにちはギデオン、あなたはクロームで完璧な作品を提供してきた作業溶液。しかし、この作業をFirefoxブラウザで行うためには、どのような調整が必要になるでしょうか。私はfirefoxで試してみたところ、9/10の方法で動作し、その月のマニュアルを選択する必要があります。マウスイベントがfirefoxとは違うようです。 –

+0

@BradleyMcKinnon小さな変更を加えました。 Chrome、FireFox、Safariは正常に動作するはずです。他の人にはテストされません。 –

+0

説明どおりに作業してください!あなたの助けをありがとう、非常に感謝します。 –

関連する問題