私は非常に基本的なif-thenコードをselect文に基づいて実行しようとしていますが、動作していないようです。私は、ウィンドウがロードされるとすぐにイベントリスナーを作成しましたが、それは私が追加したconsole.log
ステートメントに基づいて一度だけ実行されているようです。私のイベントリスナーは一度だけトリガーされ、エラーのないコードを実行していませんか?
私はselectの中の別のオプションに変更すると、値が変更されるか、または何が選択されているかに応じてプロンプトが表示されると思います。代わりに、何も起こっていない。
JS Hintでコードを実行して小さなエラーを見つけましたが、Chromeのコンソールでもエラーが発生していません。
私が選択したオプションの値を取得する方法を覚えしようとするこの回答を見てきました:Get selected value in dropdown list using JavaScript?
セレクトコード:
<select name="type_of_service" id="type_of_service">
<option selected="selected">Choose one...</option>
<option value="optgroup_1">Every time</option>
<option value="optgroup_2" name="trigger-describe_interval">On an interval...</option>
<option value="optgroup_3">Completely optional</option>
</select>
のJavascript機能&イベントリスナー:
// The following is a list of event listeners. We need to start it off with a making sure the body has loaded first.
window.addEventListener("load", function() {
console.log("Checkpoint 1");
// Add more listeners here...
var type_of_service = document.getElementById("type_of_service");
type_of_service.addEventListener("change", trigger_describe_interval());
});
// This funciton is for the selector, with the ID of type_of_service
function trigger_describe_interval() {
console.log("Checkpoint 2");
var selected_object = document.getElementById('type_of_service');
var current_value = selected_object.options[selected_object.selectedIndex].value;
// So now we've aquired the value of the select.
// If the value is optgroup_1, then change the described_interval to 3500 miles
if (current_value == "optgroup_1") {
document.getElementById('described_interval').value = "1";
}
// Otherwise, if the option is optgroup_2 then ask for an interval
else if (current_value == "optgroup_2") {
// create a prompt varible
var response = prompt("Enter the interval in miles. For example, if you would like this service to be used every 3500 miles, enter '3500'");
// Ensure that this is a integer
if (response !== parseInt(response, 10)) {
// So now it's not a number, tell them that
response = window.alert("Sorry, but \"" + response + "\"is not a valid entry. Please try again. ");
// loop back
trigger_describe_interval();
// abort this version of the function
return false;
}
}
}
問題の関連コードを投稿してください。 – imtheman
この質問は、後で存在しないかもしれないどこかへのリンクだけでなく、質問自体に関連するコードを追加することによって改善することができます。 – scrappedcola
また、問題はこの 'type_of_service.addEventListener(" change "、trigger_describe_interval());'であり、 'type_of_service.addEventListener(" change "、trigger_describe_interval);' – imtheman