坐标div的网格,着色jquery

时间:2015-04-17 05:59:39

标签: jquery

我碰巧遇到一个很难识别的特定问题。

我有很长的代码,我无法缩小范围,因为我不知道究竟是什么,我不知道或究竟是什么问题。

以下是代码:http://codepen.io/julian-a-avar/pen/EaLozR

我所知道的是,问题介于line 116line 177之间,但如果我将代码缩小到该部分,则代码本身将不再具有功能。

为了方便起见,我决定在我的代码中添加一个链接,而不是在这里复制代码。

我的问题如下:

我已经找到了方法,所以我可以看到选择了一个情节。一旦我按"定居" ,选择的图表就会替换与对象you完全相同的属性。

JQuery,不知何故,似乎记录了我点击的哪个方块,并将我之前点击的每一个方块更改为you属性,而不仅仅替换了当前选择的绘图的属性假设是。

1 个答案:

答案 0 :(得分:2)

您在代码中遇到了几个问题:

  • 您将点击处理程序附加到" colonize"每个div单击按钮,这不应该在单击处理程序内完成。 - 我移动了div单击处理程序之外的定居按钮的单击处理程序。
  • 而不是在div模糊上将颜色返回黑色,更简单的是将它们全部涂成黑色并将颜色$(this)颜色变为白色 - 完成
  • plot_idobj vars应该是全局的,并且只在div click处理程序中分配,这样您也可以从colonize click处理程序访问它们。 - 完成
  • plot_info函数也需要移出处理程序之外。每次单击div时都没有理由重新创建此功能。 - 完成
  • 你有一个名为plot_info的全局var,我不打算检查它的用途,但它与上面的函数同名。如果你需要这个var,那么将它重命名为其他东西。 - 我暂时删除了var。

这是你固定的 Pen

$(function () {
    var i;
    var plot_id;
    var obj;

    function plot(building, terrain, temperature, humidity, population, money, goods_produced, corruption_level, owned_by) {
        this.building = building;
        this.terrain = terrain;
        this.temperature = temperature;
        this.humidity = humidity;
        this.population = population;
        this.money = "$" + money;
        this.goods_produced = goods_produced;
        this.corruption_level = corruption_level + "%";
        this.owned_by = owned_by;
    }

    var you = new plot("little houses", "soft", "warm", "normal", "0", "0", "none", "33", "you");
    var barbarian = new plot("none", "soft", "warm", "normal", "0", "0", "none", "5", "barbarian");
    var user = new plot("none", "soft", "warm", "normal", "0", "0", "none", "70", "user");

    var AA = new plot("none", "soft", "warm", "normal", "0", "0", "none", "0", "no one");
    var AB = new plot("none", "soft", "warm", "normal", "0", "0", "none", "0", "no one");
    var AC = new plot("none", "soft", "warm", "normal", "0", "0", "none", "5", "barbarian");
    var AD = new plot("castle", "soft", "warm", "normal", "0", "0", "none", "5", "barbarian");
    var AE = new plot("none", "soft", "warm", "normal", "0", "0", "none", "5", "barbarian");
    var AF = new plot("none", "soft", "warm", "normal", "0", "0", "none", "0", "no one");
    var AG = new plot("none", "soft", "warm", "normal", "0", "0", "none", "0", "no one");
    var AH = new plot("none", "soft", "warm", "normal", "0", "0", "none", "0", "no one");
    var AI = new plot("none", "soft", "warm", "normal", "0", "0", "none", "0", "no one");

    var BA = new plot("none", "soft", "warm", "normal", "0", "0", "none", "0", "no one");
    var BB = new plot("none", "soft", "warm", "normal", "0", "0", "none", "0", "no one");
    var BC = new plot("none", "soft", "warm", "normal", "0", "0", "none", "0", "no one");
    var BD = new plot("none", "soft", "warm", "normal", "0", "0", "none", "5", "barbarian");
    var BE = new plot("none", "soft", "warm", "normal", "0", "0", "none", "5", "barbarian");
    var BF = new plot("none", "soft", "warm", "normal", "0", "0", "none", "0", "no one");
    var BG = new plot("none", "soft", "warm", "normal", "0", "0", "none", "0", "no one");
    var BH = new plot("none", "soft", "warm", "normal", "0", "0", "none", "0", "no one");
    var BI = new plot("none", "soft", "warm", "normal", "0", "0", "none", "0", "no one");

    var CA = new plot("none", "soft", "warm", "normal", "0", "0", "none", "0", "no one");
    var CB = new plot("none", "soft", "warm", "normal", "0", "0", "none", "0", "no one");
    var CC = new plot("none", "soft", "warm", "normal", "0", "0", "none", "0", "no one");
    var CD = new plot("none", "soft", "warm", "normal", "0", "0", "none", "0", "no one");
    var CE = new plot("none", "soft", "warm", "normal", "0", "0", "none", "0", "no one");
    var CF = new plot("none", "soft", "warm", "normal", "0", "0", "none", "0", "no one");
    var CG = new plot("none", "soft", "warm", "normal", "0", "0", "none", "0", "no one");
    var CH = new plot("none", "soft", "warm", "normal", "0", "0", "none", "0", "no one");
    var CI = new plot("none", "soft", "warm", "normal", "0", "0", "none", "0", "no one");

    var DA = new plot("none", "soft", "warm", "normal", "0", "0", "none", "0", "no one");
    var DB = new plot("none", "soft", "warm", "normal", "0", "0", "none", "0", "no one");
    var DC = new plot("none", "soft", "warm", "normal", "0", "0", "none", "0", "no one");
    var DD = new plot("none", "soft", "warm", "normal", "0", "0", "none", "33", "you");
    var DE = new plot("none", "soft", "warm", "normal", "0", "0", "none", "0", "no one");
    var DF = new plot("none", "soft", "warm", "normal", "0", "0", "none", "33", "you");
    var DG = new plot("none", "soft", "warm", "normal", "0", "0", "none", "0", "no one");
    var DH = new plot("none", "soft", "warm", "normal", "0", "0", "none", "0", "no one");
    var DI = new plot("none", "soft", "warm", "normal", "0", "0", "none", "0", "no one");

    var EA = new plot("none", "soft", "warm", "normal", "0", "0", "none", "0", "no one");
    var EB = new plot("none", "soft", "warm", "normal", "0", "0", "none", "0", "no one");
    var EC = new plot("none", "soft", "warm", "normal", "0", "0", "none", "0", "no one");
    var ED = new plot("none", "soft", "warm", "normal", "0", "0", "none", "33", "you");
    var EE = new plot("castle", "soft", "warm", "normal", "1000", "1000000", "none", "33", "you");
    var EF = new plot("none", "soft", "warm", "normal", "0", "0", "none", "33", "you");
    var EG = new plot("none", "soft", "warm", "normal", "0", "0", "none", "0", "no one");
    var EH = new plot("none", "soft", "warm", "normal", "0", "0", "none", "0", "no one");
    var EI = new plot("none", "soft", "warm", "normal", "0", "0", "none", "0", "no one");

    var FA = new plot("none", "soft", "warm", "normal", "0", "0", "none", "0", "no one");
    var FB = new plot("none", "soft", "warm", "normal", "0", "0", "none", "0", "no one");
    var FC = new plot("none", "soft", "warm", "normal", "0", "0", "none", "0", "no one");
    var FD = new plot("none", "soft", "warm", "normal", "0", "0", "none", "33", "you");
    var FE = new plot("none", "soft", "warm", "normal", "0", "0", "none", "33", "you");
    var FF = new plot("none", "soft", "warm", "normal", "0", "0", "none", "33", "you");
    var FG = new plot("none", "soft", "warm", "normal", "0", "0", "none", "0", "no one");
    var FH = new plot("none", "soft", "warm", "normal", "0", "0", "none", "0", "no one");
    var FI = new plot("none", "soft", "warm", "normal", "0", "0", "none", "0", "no one");

    var GA = new plot("none", "soft", "warm", "normal", "0", "0", "none", "0", "no one");
    var GB = new plot("none", "soft", "warm", "normal", "0", "0", "none", "0", "no one");
    var GD = new plot("none", "soft", "warm", "normal", "0", "0", "none", "33", "you");
    var GC = new plot("none", "soft", "warm", "normal", "0", "0", "none", "33", "you");
    var GE = new plot("none", "soft", "warm", "normal", "0", "0", "none", "33", "you");
    var GF = new plot("none", "soft", "warm", "normal", "0", "0", "none", "0", "no one");
    var GG = new plot("none", "soft", "warm", "normal", "0", "0", "none", "0", "no one");
    var GH = new plot("none", "soft", "warm", "normal", "0", "0", "none", "70", "user");
    var GI = new plot("none", "soft", "warm", "normal", "0", "0", "none", "0", "no one");

    var HA = new plot("none", "soft", "warm", "normal", "0", "0", "none", "0", "no one");
    var HB = new plot("none", "soft", "warm", "normal", "0", "0", "none", "0", "no one");
    var HC = new plot("none", "soft", "warm", "normal", "0", "0", "none", "0", "no one");
    var HD = new plot("none", "soft", "warm", "normal", "0", "0", "none", "0", "no one");
    var HE = new plot("none", "soft", "warm", "normal", "0", "0", "none", "0", "no one");
    var HF = new plot("none", "soft", "warm", "normal", "0", "0", "none", "0", "no one");
    var HG = new plot("none", "soft", "warm", "normal", "0", "0", "none", "70", "user");
    var HH = new plot("castle", "soft", "warm", "normal", "0", "0", "none", "70", "user");
    var HI = new plot("none", "soft", "warm", "normal", "0", "0", "none", "0", "no one");

    var IA = new plot("none", "soft", "warm", "normal", "0", "0", "none", "0", "no one");
    var IB = new plot("none", "soft", "warm", "normal", "0", "0", "none", "0", "no one");
    var IC = new plot("none", "soft", "warm", "normal", "0", "0", "none", "0", "no one");
    var ID = new plot("none", "soft", "warm", "normal", "0", "0", "none", "0", "no one");
    var IE = new plot("none", "soft", "warm", "normal", "0", "0", "none", "0", "no one");
    var IF = new plot("none", "soft", "warm", "normal", "0", "0", "none", "0", "no one");
    var IG = new plot("none", "soft", "warm", "normal", "0", "0", "none", "0", "no one");
    var IH = new plot("none", "soft", "warm", "normal", "0", "0", "none", "70", "user");
    var II = new plot("none", "soft", "warm", "normal", "0", "0", "none", "70", "user");

    function plot_info() {
        $("#coordinates").text("(" + plot_id.toLowerCase().split("") + ")");
        $("#building").text(obj.building);
        $("#terrain").text(obj.terrain);
        $("#temperature").text(obj.temperature);
        $("#humidity").text(obj.humidity);
        $("#population").text(obj.population);
        $("#money").text(obj.money);
        $("#goods_produced").text(obj.goods_produced);
        $("#corruption_level").text(obj.corruption_level);
        $("#owned_by").text(obj.owned_by);
    }

    function color() {
        $("#map").children("div").each(function () {
            var plot_id = this.id.toUpperCase();
            var obj = eval(plot_id);

            switch (obj.owned_by) {
                case "you":
                    $(this).css({
                        "background-color": "red"
                    });
                    break;
                case "user":
                    $(this).css({
                        "background-color": "yellow"
                    });
                    break;
                case "barbarian":
                    $(this).css({
                        "background-color": "blue"
                    });
                    break;
            }
        });
    }
    color();

    $("#map div").click(function () {

        plot_id = this.id.toUpperCase();
        obj = eval(plot_id);
        $("#map div").css({
            "color": "black"
        });
        $(this).css({
            "color": "white"
        })

        plot_info();
    });

    var $colonize = $("#colonize_land");
    $colonize.click(function () {
        console.log(obj);
        if (obj.owned_by === "no one") {
            for (i in you) {
                obj[i] = you[i];
            }
        } else if (obj.owned_by === "you") {
            //              alert("you own this already");
        } else {

        }
        plot_info();
        color();
    });
});