簡體   English   中英

這個JS / Jquery方法有什么問題? (數組,點擊事件)

[英]What is wrong with this JS/Jquery method? (Arrays, click-event)

編輯 我已經找出了什么地方出了問題。 如果您想看看是否也可以找到它,請放心。 否則,我會在答案中發布答案。

由於我之前曾問過這個問題,所以我將繼續發布所有代碼,但忽略了我認為對發現問題沒有必要的事情,但回答者需要所有代碼。

以下代碼是按照我的其他一些代碼建模的,這些代碼可以很好地工作,但是在這種方法中它不起作用。 我有一個名為#container的初始div,它是俄克拉荷馬州地圖的圖像,在該圖像上您可以看到該州的不同部分。 在我的舊代碼中,當用戶單擊細分的特定區域時,它將關閉#container div並打開該細分的“放大”圖片的圖片的div。 在應該使我的代碼更簡潔的新代碼之后,它將不會關閉#container (並且我懷疑不會打開新的div)。

我通過在用戶單擊時使用鼠標位置來確定要打開的段( #region )。 我使用像素坐標,並且已經完成了數學運算以縮放這些坐標,因此屏幕大小無關緊要。

現在,這是新的錯誤代碼:

$(document).ready(function()
{


//Main Oklahoma map
$("#container").click(function(e)
{
    var x = event.pageX;
    var y = event.pageY;

    const scaling_Screen_Max_Pixel_X = 1679;
    const scaling_Screen_Max_Pixel_Y = 924;

    // Math for the scaling of different sized windows
    var currentX = $(document).width();
    var currentY = $(document).height();
    var xScale = currentX/scaling_Screen_Max_Pixel_X;
    var yScale = currentY/scaling_Screen_Max_Pixel_Y;

    // Variables for different regions
    var zoneX = x/xScale;
    var zoneY = y/yScale;

    // Arrays containing the min and max x and y values of the rectangular area around a farm
    var minX = [47, 593, 593, 958, 600, 744, 852, 1025, 1060, 1159, 1366];
    var maxX = [553, 958, 792, 1011, 1124, 1124, 1149, 1598, 1280, 1623, 1551];
    var minY = [250, 250, 473, 349, 526, 665, 495, 248, 471, 520, 481];
    var maxY = [330, 473, 515, 478, 665, 721, 526, 471, 500, 763, 520];

    var regionNumber = [1,2,2,2,3,3,3,4,4,5,5];

    /** Loops through the values within the coordinate arrays to
        determine if the user clicked within a certain area **/
    for (var i = 0; i < minX.length; i++)
    {
        if(zoneX >= minX[i] && zoneX <= maxX[i] && zoneY >= minY[i] && zoneY <= maxY[i]) 
        {
            $("#region"+region[i]).toggle();
            $("#container").toggle(); //toggle off
        }
    }
   }); 
 });

minX,maxX等數組中的坐標是按順序排列的,因此,這四個數組中的每個數組中的第一個元素都屬於第一個區域( #region1 )。 我擁有regionNumber數組的原因是因為某些區域不完全是矩形,所以我對某些區域具有一組以上的“矩形”坐標。

就像我之前說過的,單擊區域不會發生任何反應。 您看到這里有什么問題嗎?

糟糕! 坐在這里盯着我的代碼,我意識到了問題所在。 我忘了說$("#region"+regionNumber[i]).toggle(); 而不是$("#region"+region[i]).toggle();

現在工作正常。 感謝大家的光臨!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM