我正在努力使我的代码更简洁(即,重复代码更少)。我从我的主管那里得到了一些关于如何使我最近的代码更简洁的建议,但我不确定该怎么做。
我有一些坐标用于检查用户是否在 div 的特定区域内单击。有人告诉我应该将所有坐标放在一个数组中,并在需要时“循环”以获取它们。我 - 认为 - 我理解他的建议,但我不能完全理解它,因为我对编程仍然缺乏经验。这是我到目前为止所做的,以便您可以更好地了解正在发生的事情:
$("#div1").click(function(e)
{
// Arrays containing the x and y values of the rectangular area around a farm
// [minX, maxX, minY, maxY]
var div1_Coord_Area1= [565, 747, 310, 423];
var div1_Coord_Area2= [755, 947, 601, 715];
if(areaX >= Reg2_Coord_Farm1[0] && areaX <= Reg2_Coord_Farm1[1] && areaY >= Reg2_Coord_Farm1[2] && areaY <= Reg2_Coord_Farm1[3])
{
alert("You clicked in the first area");
}
if(areaX >= Reg2_Coord_Farm2[0] && areaX <= Reg2_Coord_Farm2[1] && areaY >= Reg2_Coord_Farm2[2] && areaY <= Reg2_Coord_Farm2[3])
{
alert("You clicked in the second area");
}
});
不要担心我是如何计算的;我将该代码排除在方法之外,因为它基本上是无关紧要的,但它在那里,以防您想知道。
我为每组坐标创建了一个数组,并简单地调用它们。然而,这并不是“循环遍历”一个巨大的数组,其中包含每个区域的所有坐标。您能想出一种方法吗?或者这是目前我能做的最好的方法?
最佳答案
我认为他的意思更像是这样:
$("#div1").click(function(e){
// Arrays containing the x and y values of the rectangular area around a farm
// For each array: [area1, area2, area3, ... areaX]
var minX = [565, 755];
var maxX = [747, 947];
var minY = [310, 601];
var maxY = [423, 715];
for (var i = 0; i < minX.length; i++) {
if (areaX >= minX[i] && areaX <= maxX[i] && areaY >= minY[i] && areaY <= maxY[i]) {
alert("You clicked in area " + (i+1));
}
}
});
这样,您可以有更多的区域要检查,而不必更改循环,因为它将始终遍历数组中的所有项目,无论是上面的 2 项,还是 10 项,还是 100 项。
关于javascript - 代码建议 - 如何使代码更简洁 (Javascript/Jquery),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5465147/