Я работаю с Javascript и нуждаюсь в некоторой помощи с меню (aka drop-down).Javascript: обработчики событий & <select> меню
Будет представлен массив из примерно 300 объектов, из которых меню выбора получит свои параметры. Какие элементы в массиве будут перечислены, будут определены другими функциями, обновленными как пользователь, и поэтому имена и количество опций в меню выбора не будут статическими. На странице будут отображаться данные выбранного объекта.
Мой вопрос заключается в следующем: какой тип настройки обработчика событий (редактировать * прослушиватель) мне нужно, чтобы страница обновляла отображаемые данные в зависимости от того, какая опция выбрана в меню? Я не уверен, что .onfocus будет работать для этого, так как я не могу сделать обработчик события .onfocus для элемента в меню, которое может не существовать в то время ... Возможно, я просто не уверен, как это сделать. onfocus взаимодействует с меню вообще. Если есть какой-то другой обработчик, чем .onfocus, который делает трюк, пожалуйста, дайте мне знать.
//constructor begins
function Ingredient(params) {
this.pic = params.pic;
this.name = params.name;
this.nameIsKnown = false;
this.unrefinedPot = params.unrefinedPot;
this.unrefinedPotIsKnown = false;
this.refinedPot = params.refinedPot;
this.refinedPotIsKnown = false;
this.rawQty = 0;
this.unrefinedQty = 0;
this.refinedQty = 0;
this.refineDC = params.refineDC;
this.refineDCIsKnown = false;
this.properties = [params.prop1, params.prop2, params.prop3, params.prop4];
this.propertyIsKnown = [false, false, false, false];
this.whereFound = [];
this.isPoisonous = params.isPoisonous;
this.genericDescription = params.genericDescription;
this.fullDescription = params.fullDescription;
}
//constructor ends
//prototype stuff begins
//prototype stuff
//prototype stuff ends
//example object literal that gets passed to constructor
var baconParams = {pic: "bacon.png",
name: "Bacon",
unrefinedPot: 1,
refinedPot: 2,
refineDC: 17,
prop1: "Juicy",
prop2: "Crispy",
prop3: "Smokey",
prop4: "Burnt",
isPoisonous: false,
genericDescription: "Unidentified animal part.",
fullDescription: "This is a pig meat product that comes in strips. It is usually fried until crispy and eaten for breakfast."};
var masterArray = [];
function fillList() {
for (i = 0; i < masterArray.length; i++) {
var current = masterArray[i];
var itemName = current.name;
var option = document.createElement("option");
option.innerHTML = itemName;
var select = document.getElementById("testselect");
select.appendChild(option);
}
}
var bacon = new Ingredient(baconParams);
masterArray.push(bacon);
//this is the part you gave me
document.getElementById("testselect").addEventListener("change", callback, true);
function callback(event) {
//e.preventDefault();
//e.stopPropagation();
var value = event.target.value;
var text = document.getElementById("testp");
text.innerHTML = value;
}
fillList();
Я действительно с помощью выбора элемента. Это первое, что я слышал о слушателе «change», не могли бы вы привести мне пример event.target.value, который он возвращает? –
Я отправлю редактирование на мой ответ, чтобы лучше пометить его. –
Обратите внимание, что при перемещении опций с помощью клавиш курсора IE запускает событие изменения каждый раз, когда выбирается новый параметр, тогда как другие браузеры будут делать это только в том случае, если он теряет фокус или выбор подтверждается каким-либо другим способом. – RobG