JavaScript if/else 没有按预期运行

标签 javascript jquery css if-statement

我正在使用 jQuery 在我的网站上选择一个按钮并添加一个事件监听器以在单击时添加一个 night-time 类。

最初该按钮有效,但是当我再次单击该按钮时,它不会运行删除 night-time 类的代码。

这是 JavaScript 代码:

var night_time = false;

if (!night_time) {
  $('.blog-desc').find('a').on('click', function() {
    $('html').addClass('night-time').animate(200);
    night_time = true;
    console.log("Making it night!");
  });
} else {
  $('.blog-desc').find('a').on('click', function() {
    $('html').attr('class', "");
    night_time = false;
    console.log("Making it day!");
});

我真的不知道为什么这不起作用,但我觉得我错过了一些非常明显的东西。此外,.animate({}, 200) 也不起作用,因为它只是立即应用类,但这个问题对我来说不如主要问题重要。

最佳答案

更新您的 night_time 变量不会自动更改事件处理程序。

试试这个:

var night_time = false,
    $html = $('html');
$('.blog-desc').find('a').on('click', function() {
    night_time = !night_time;
    $html.toggleClass('night-time', night_time);
    console.log(night_time ? "Making it night!" : "Making it day!");
});

var night_time = false,
    $html = $('html');
$('.blog-desc').find('a').on('click', function() {
  night_time = !night_time;
  $html.toggleClass('night-time', night_time);
  console.log(night_time ? "Making it night!" : "Making it day!");
});
.night-time {
  background: #000;
  color: #fff;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div class="blog-desc">
  <a>Click me</a>
</div>

关于JavaScript if/else 没有按预期运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29235951/

相关文章:

javascript - 如何使用 jQuery 更改选择框的选定选项

javascript - javascript中如何从字符串中获取数据

php - 一个js文件在另一个php文件中的Javascript : calling document. ready()函数

CSS 在 5 秒后自动隐藏元素

html - 内联 block 表单元素在应用填充时换行并且之间存在空格

html - Bootstrap Collapse 双向打开

javascript - React JSX 按钮的动态定位

javascript - NodeJS 示例中奇怪的 JavaScript 语法

javascript - 如何从弹出窗口检索图像 src 属性到父页面

jquery - 检查元素时如何更改文本颜色