【发布时间】:2014-04-09 19:22:08
【问题描述】:
我有一个简单的索引页面,允许您单击一个按钮来更改背景圆形 div 上随机显示的颜色。我编写的代码运行良好,但确实重复;我为每个按钮编写了一个函数,除了它们访问的变量之外,这些函数看起来都一样。
我正在尝试将其重构为单个函数,但无法找到一种方法来允许单击的按钮访问正确的变量以更改背景颜色。 例如,这里是第一个按钮的函数,它访问将颜色更改为灰度光谱的 colorList 变量:
var colorList1 = [//array of 20 colors]
var colorList2 = [//array of 20 colors]
var colorList3 = [//array of 20 colors]
var colorList4 = [//array of 20 colors]
// .choice-1 is the div class for the first button
$(".choice-1").on("click", function() {
blankSlate();
colorList = colorList1;
$("[id^='nav']").css("background-color", colorList[1]);
$("#colorChoice").css("background-color", colorList[1]);
});
我尝试编写一些可以访问类名中的数字并将其分配给主函数可以访问的变量的内容,如下所示:
var buttonVar = $("button").attr[0].nodeValue; // get full name of nodeValue
var btnChoice = buttonVar[buttonVar.length-1]; // access number at end of class name
$("button").on("click",function() {
$('.choice' + btnChoice).on('click', function(){*/
blankSlate();
colorList = colorList + btnChoice;
$("[id^='nav']").css("background-color", colorList[btnChoice]);
$("#colorChoice").css("background-color", colorList[btnChoice]);
});
...但我不确定这是否是正确的方法,并且我希望得到一些关于通常如何处理这种类型的重构的建议。
这是一个 Codepen 的链接,展示了它是如何工作的,并且所有的 html、css 和剩余的 JS 都是可见的。 http://codepen.io/a6ftcruton/full/Beizu
【问题讨论】:
标签: jquery html css refactoring parameter-passing