基于VAR值隐藏动态JS按钮
问题描述:
我遇到类似问题:Hide dynamically added buttons based on an if statement。随着黑暗室的JS mod我正在努力提高我的JS技能。这两个片段都不是我的,而且都是完美的。基于VAR值隐藏动态JS按钮
这是代码片段创建按钮:
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;
}
答
隐藏和显示元素通常是通过一个类来完成的。有一个CSS类这样
.hidden {
display : none'
}
然后在你的JavaScript中,添加或删除hidden
类根据您的病情
if(condition) {
$(element).addClass('hidden');
} else {
$(element).removeClass('hidden');
}
答
很难建议,因为没有足够的上下文。您展示的片段可能不仅仅是专门负责控制按钮的可见性(尽管内联评论是这样说的)。因此,以下建议可能无法正常工作,您需要更多关于您要做什么以及更多代码的信息。
如果您有权修改代码段,那么您可以在其中包含最大值。如果最大值是一个变量(即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;
}