2016-08-07 7 views
0

ドロップダウンリストをクリックしようとするたびに、最初のイベントは既にドロップダウンリストにロードされています.2番目のイベントはドロップダウンリストでクリックしたものです。したがって、本質的に、2つのイベントが発生していますが、私は2回目のクリックをしたいだけです。オプションを2回クリックします

HTML

<select class="pictureList" id="pictureList"> 
<option class ="option0" id="option0">select a picture</option> 
<option class ="option1" id="option1">picture 1</option> 
<option class ="option2" id="option2">picture 2</option> 
</select> 

Javascriptを

document.addEventListener("DOMContentLoaded", function() { 
    document.getElementById("pictureList").addEventListener("onkeyup", actionListener, false); 
}, false); 

function actionListener(event) { 
    if(event.target == document.getElementById("pictureList")) { 
    loadPicture(); 
    } 
} 

function loadPicture() { 
    var picture = document.getElementById("pictureList"); 
    if (picture == "select a picture") 
    load; 
    else if (picture == "picture 1") 
    load; 
    else if (picture == "picture 2") 
    load; 
} 

だから、すべてが正しくロードされ、それは私が他のオプションを表示するには、リストをクリックすると、それはすでにリストにあるものは何でもロードするのと同じことです。例えば、リストは写真1から始まり、写真2をロードしたい。次にリストをクリックしてオプションを見ると、写真1が再びロードされ、次に写真2をクリックするとロードされる。私は写真1が再びロードされるのを望んでいません。私もonchangeを試みましたが、それでもやります。

+1

'change'イベントhttps://developer.mozilla.org/en-US/docs/Web/Events/changeを探しています。実際にselectのオプションを選択したときにトリガされます。 – yuriy636

+0

ええ、私は変更を試みたが、それはそれを行うだろう。 – Jason

+0

あなたのコードでは、 'load;'とは何ですか? – yuriy636

答えて

1

addEventListenerで "onkeyup"の代わりに "change"を試すことができます。
例:document.getElementById( "pictureList")。addEventListener( "change"、actionListener、false);

参照URL:addEventListener, "change" and option selection

それとも、「[email protected]」に私のコードの一部を送信することがより多くの助けのために。

+0

私は変更を試みましたが、それは動作しません。 – Jason

関連する問題