使用函数简化我的JavaScript

时间:2010-05-05 18:02:12

标签: javascript mootools

我有一系列选择列表,我用来填充带有ID​​的文本框。 所以你单击一个选择选项,另一个文本框中填充了它的id。

只有一个select / id对,这个工作正常,但我有倍数,唯一改变的是select和input的id ..实际上只是结束更改,输入都以featredproductid和选择ID都以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(不,我不能更新它抱歉)。 我相信这是一种基本的东西,我似乎把我的大脑包裹起来。但我很确定这样做并不是很好......

2 个答案:

答案 0 :(得分: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
        });
    });
}

答案 1 :(得分:0)

这样的事情可能有所帮助:

 function bindSelectFeature(select, featured) {
    $(select).addEvent('change', function(e){
        pidselected = this.options[this.selectedIndex].getProperty('value') ;
        $(featured).setProperties({
          value: pidselected
        });
     });
  });
  bindSelectFeature('recipesproductpasta','featuredproductidpasta');