javascript - 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
似乎不会影响我的变量animal
,food
并且thing
。它只会改变category
为true
喜欢它是一个新变量。
解决方案
在 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>
推荐阅读
- .net - 如何在c#中的Web浏览器控件中单击html提交按钮后获取重定向url?
- jquery - 如何在 AJAX 插入为 Flash 消息后加载部分视图
- vue.js - 如何在 Vue.js 中使用 vue-google-charts 包装器创建谷歌折线图?
- c++ - 当用户输入在C++中为“q”时如何退出do-while循环
- jsdom - 为什么 jsdom 将我的属性 *values* 设置为全小写?
- android - 将按钮添加到 ExpandableListView 上的所有子项
- android - 如何在启动片段后使活动不可见并在完成后返回?
- python - Python Popen 编译 Java
- firebase - 从 Xamarin.iOS 文件修改 Xamarin.Forms 页面
- xcode - 命令 PhaseScriptExecution 失败,退出代码非零 - 没有这样的文件或目录