javascript - 使用JavaScript多次单击按钮时无法带上div

标签 javascript html css button

当您多次点击条形图标时,您不能带十字图标。

当您单击栏图标时,会出现一个十字图标。当您单击新的十字图标时,会出现条形图标。到目前为止,一切都很好。但是,当您再次单击栏图标时,没有任何反应。

var barsIcon = document.getElementById("bars-icon");
var crossOG;

barsIcon.addEventListener("click", function() {
  barsIcon.setAttribute('class', 'fas fa-times');
  barsIcon.setAttribute('id', 'cross-icon');

  var crossIcon = document.getElementById('cross-icon');
  crossOG = crossIcon;

  crossIcon.addEventListener("click", function() {
    crossIcon.setAttribute('class', 'fas fa-bars fa-x');
    crossIcon.setAttribute('id', 'bars-icon');
  });
});
<head>
  <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.11.2/css/all.css">
</head>

  <div>
    <i class="fas fa-bars" id="bars-icon" style="flex-grow: 1;"></i>
  </div>

最佳答案

这不是绑定(bind)事件的正确方法。不要在嵌套函数中使用事件绑定(bind)。这不是一个好习惯

var menuIcon = document.getElementById("icon");
var toggled = false;
var crossOG;

menuIcon.addEventListener("click", function() {
  if(!toggled){
    menuIcon.setAttribute('class', 'fas fa-times');
    toggled = true;
  }
  else{
    menuIcon.setAttribute('class', 'fas fa-bars fa-x');
    toggled = false;
  }
    
});
<head>
  <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.11.2/css/all.css">
</head>

  <div>
    <i class="fas fa-bars" id="icon" style="flex-grow: 1;"></i>
  </div>

并且不要更改元素 ID。

关于javascript - 使用JavaScript多次单击按钮时无法带上div,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59176971/

相关文章:

javascript - 在 do/end block 中禁用 Rails form_for 提交按钮

css - UL inside a Div vertically centered | Bootstrap 3.3.7

javascript - 使用 jQuery 为列表元素创建悬停状态

html - CSS 表格 - 添加边距列和行 border-bottom

css - 记住 CSS 属性

javascript - Storybook 可选 Prop force undefined

javascript - 文件中的 Laravel javascript 不起作用,但如果通过 CDN 包含则可以

javascript - Javascript 可能会从多个同名输入中提交一个值吗?

javascript - 使用 react Hook 更改点击时的文本颜色

css - 在同一个div中以不同方式对齐两个元素