Я работаю над простой фермерской игрой, и у меня проблемы с повторяющимся кодом. Мне нужно сделать разные функции сбора урожая для каждого предмета, и чем больше добавляется овощей, тем труднее делать ...

-1
Squirrel 5 Янв 2021 в 23:46

1 ответ

Лучший ответ

Поскольку вы пытаетесь упростить, вы можете просто не использовать идентификатор и просто ссылаться на родительский объект и атрибут данных.

let plotStatus = {corn:"empty",peas: "empty"}
let produce = {corn : 0,peas: 0}

function plant(el){
   plot = el.parentNode;
   veg = plot.dataset.produce;
   
   switch(veg){
      case "peas" : plantPeas();break;
   }
}

function harvest(el) {
   plot = el.parentNode;
   veg = plot.dataset.produce;
   
   plotStatus[veg] = "empty";
   
   plot.querySelector(".grow").style.opacity = "1";
   plot.querySelector(".harvest").style.opacity = "0";
   plot.querySelector(".harvest").style.zIndex = "-1";
   produce[veg]++;
   
   console.log(produce, plotStatus);
}
<div data-produce="peas" class="plot">
  <button class="grow" onclick="plant(this)">Grow Peas!</button> 
  <button class="harvest" onclick="harvest(this)">Harvest Peas!</button>
</div>

<div data-produce="corn" class="plot">
  <button class="grow" onclick="plant(this)">Grow Corn!</button> 
  <button class="harvest" onclick="harvest(this)">Harvest Corn!</button>
</div>
0
imvain2 5 Янв 2021 в 21:48