我碰巧遇到一个很难识别的特定问题。
我有很长的代码,我无法缩小范围,因为我不知道究竟是什么,我不知道或究竟是什么问题。
以下是代码:http://codepen.io/julian-a-avar/pen/EaLozR
我所知道的是,问题介于line 116
和line 177
之间,但如果我将代码缩小到该部分,则代码本身将不再具有功能。
为了方便起见,我决定在我的代码中添加一个链接,而不是在这里复制代码。
我的问题如下:
我已经找到了方法,所以我可以看到选择了一个情节。一旦我按"定居" ,选择的图表就会替换与对象you
完全相同的属性。
JQuery,不知何故,似乎记录了我点击的哪个方块,并将我之前点击的每一个方块更改为you
属性,而不仅仅替换了当前选择的绘图的属性假设是。
答案 0 :(得分:2)
您在代码中遇到了几个问题:
$(this)
颜色变为白色 - 完成 plot_id
和obj
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();
});
});