2016-05-25 3 views
0

У меня есть аналогичная проблема: Hide dynamically added buttons based on an if statement. С модой JS для A Dark Room я работаю над повышением своих навыков JS. Ни один из этих фрагментов не принадлежит мне, и оба работают отлично.Скрыть динамические кнопки JS на основе значения var

Это фрагмент кода для создания кнопки:

build: function(buildBtn) { 
     var thing = $(buildBtn).attr('buildThing'); 
     if($SM.get('game.temperature.value') <= Room.TempEnum.Cold.value) { 
      Notifications.notify(Room, _("builder just shivers")); 
      return false; 
     } 

Этот фрагмент кода гарантирует, что кнопки остаются видимыми, но я хотел бы изменить его так, что когда встретил максимальное значение кнопка скрыта.

//show button if one has already been built 
if($SM.get('game.buildings["'+thing+'"]') > 0){ 
    Room.buttons[thing] = true; 
    return true; 
} 

ответ

0

Скрытие и отображение элементов обычно осуществляется через класс. Есть класс CSS, как этот

.hidden { 
    display : none' 
} 

Затем в JavaScript, добавлять или удалять hidden класс в соответствии с вашим состоянием

if(condition) { 
    $(element).addClass('hidden'); 
    } else { 
    $(element).removeClass('hidden'); 
    } 
0

Трудно предположить, потому что не хватает контекста. Показанный вами фрагмент может не просто быть исключительно ответственным за контроль над видимостью кнопки (несмотря на встроенный комментарий, говорящий об этом). В результате следующее предложение может не работать и больше информации о том, что вы пытаетесь сделать, и потребуется больше кода.

Если у вас есть доступ к изменению фрагмента, вы можете указать максимальное значение. Если максимальное значение переменной (т.е. myCustomMaxValue), и это в рамках, то моя догадка бы добавить его здесь:

var myCustomMaxValue = 88; 
var someOtherVariableInScope = 50 

//show button if one has already been built 
if($SM.get('game.buildings["'+thing+'"]') > 0){ 
    //add your condition here and yield true/false 
    var myCustomCondition = someVariableInScope > myCustomMaxValue; 
    Room.buttons[thing] = myCustomCondition; 
    return myCustomCondition; 
} 

Я хотел бы предложить debug; ключевое слово. Поместите его в фрагмент и откройте инструменты разработчика браузеров, и его отладчик получит удар. Затем вы можете проверить переменные в области видимости и убедиться, что фрагмент фактически отвечает за динамическое отображение и скрытие кнопки.

//show button if one has already been built 
if($SM.get('game.buildings["'+thing+'"]') > 0){ 
    debug; 
    Room.buttons[thing] = myCustomCondition; 
    return myCustomCondition; 
}