Упорядочение моего javascript с помощью функции
У меня есть серия избранных списков, которые я использую для заполнения текстовых полей идентификаторами.
поэтому вы выбираете опцию выбора, а другое текстовое поле заполняется его идентификатором.
только с одной парью select/id это прекрасно работает, но у меня есть множественные числа, и единственное, что меняется, - это идентификатор выбора и ввода. Фактически только конечные изменения, все входы начинаются с featredproductid и выберите ids, все начинают с recipesproduct, а затем оба заканчиваются категорией.
Я знаю, что перечисление этого снова и снова для каждой категории - это не способ сделать это. я думаю, мне нужно создать массив категорий
var cats = ['оливковое масло', "зерно", "макароны" ]
а затем использовать функцию forEach? может быть?
вот неуклюжий код
window.addEvent('domready', function() {
$('recipesproductoliveoil').addEvent('change', function(e){
pidselected = this.options[this.selectedIndex].getProperty('value') ;
$("featuredproductidoliveoil").setProperties({
value: pidselected}); ;
});
$('recipesproductgrains').addEvent('change', function(e){
pidselected = this.options[this.selectedIndex].getProperty('value') ;
$("featuredproductidgrains").setProperties({
value: pidselected}); ;
});
$('recipesproductpasta').addEvent('change', function(e){
pidselected = this.options[this.selectedIndex].getProperty('value') ;
$("featuredproductidpasta").setProperties({
value: pidselected}); ;
});
$('recipesproductpantry').addEvent('change', function(e){
pidselected = this.options[this.selectedIndex].getProperty('value') ;
$("featuredproductidpantry").setProperties({
value: pidselected}); ;
});
});
помните, что это mootools 1.1 (нет, я не могу его извинить).
я уверен, что это своего рода базовый, что-то, что, кажется, обволакивает мой мозг. но я уверен, что делать это, как указано выше, не очень хорошо...
Ответы
Ответ 1
Ты близко. Вот как вы могли это сделать:
var cats = ['oliveoil', 'grains', 'pasta'];
for (i in cats) {
addChangeFunction(cats[i]);
}
function addChangeFunction(name) {
$('recipesproduct' + name).addEvent('change', function(e) {
pidselected = this.options[this.selectedIndex].getProperty('value');
$('featuredproductid' + name).setProperties({
value: pidselected
});
});
}
Ответ 2
Что-то вроде этого может помочь:
function bindSelectFeature(select, featured) {
$(select).addEvent('change', function(e){
pidselected = this.options[this.selectedIndex].getProperty('value') ;
$(featured).setProperties({
value: pidselected
});
});
});
bindSelectFeature('recipesproductpasta','featuredproductidpasta');