【发布时间】:2011-02-16 01:35:21
【问题描述】:
我有一系列选择列表,用于填充带有 ID 的文本框。 因此,您单击一个选择选项,另一个文本框将填充其 id。
只有一个 select/id 对,这很好用,但我有多个,唯一改变的是 select 和 input 的 id .. 实际上只是结尾发生了变化,输入都以 featredproductid 和select ids 都以 recipesproduct 开头,然后都以 category 结尾。
我知道为每个类别一遍又一遍地列出这一点并不是这样做的方法。我想我需要制作一个类别数组 var cat = ['橄榄油',“谷物”,“意大利面”] 然后使用 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(不,抱歉,我无法更新)。 我确信这是一种基本的东西,我似乎已经把我的大脑包围了。但我很确定按照上面的方式这样做并不是很好......
【问题讨论】:
-
JS 支持高阶函数(接受和返回函数的函数)。请注意,答案都遵循一个共同的模式:将函数的一部分分解出来,将其转化为高阶函数的参数。
-
您应该将
pidselected声明为本地(在侦听器中为var pidselected),这样您就不会使用全局并污染全局命名空间。
标签: javascript mootools