首页 > 解决方案 > Javascript:使用函数将变量更改为真/假

问题描述

我在函数中使用布尔 True/False 时遇到问题。

HTML:

<a onclick="selectCategory(animal);">Animal</a>
<a onclick="selectCategory(food);">Food</a>
<a onclick="selectCategory(thing);">Thing</a>

Javascript:

var animal = false;
var food = false;
var thing = false;

function selectCategory(category)
{
     if(category != true)
     {
          category = true;
     }
     else
     {
          category = false;
     }
}

例如,我希望此函数检查变量“动物”是否为false,然后它应该变为true。如果true,则转向false

每当我尝试这个时,它总是转向true,永远不会回到false。该变量category似乎不会影响我的变量animalfood并且thing。它只会改变categorytrue喜欢它是一个新变量。

标签: javascriptfunctionvariablesboolean

解决方案


在 99% 的情况下,重新分配原语(或任何变量)本身不会做任何事情。改为使用包含布尔值的对象,传递属性名称,然后重新分配对象上的属性:

const obj = {
  animal: false,
  food: false,
  thing: false
};
function selectCategory(category){
  obj[category] = !obj[category];
  console.log(obj);
}
<a onclick="selectCategory('animal');">Animal</a>
<a onclick="selectCategory('food');">Food</a>
<a onclick="selectCategory('thing');">Thing</a>


推荐阅读