条件在eventListener中不起作用

时间:2018-01-25 13:12:48

标签: javascript html javascript-events

我需要创建一个简单的事件监听器,每次单击按钮时,它将更改input.value第一个值元素。为了解决这个问题,我在函数menuide中为 onclick listener 写了一个简单的条件。但由于某种原因,它只在听一个事件时才起作用,尽管每次事件触发时,它都应该起作用并满足其中一个条件。

有人可以解释为什么我的功能只会在所有点击中更改一次input.value[0]吗?

function menuide() {
  menu.classList.toggle('ul-wide');

  var arr = 'b';
  var value = Array.prototype.slice.call(inp.value);
  var newValue = value.splice(1);

  if (inp.value[0] != 'b') {
    inp.value = arr + newValue.join('');
  }

  if (inp.value[0] == 'b') {
    inp.value[0] == 'a' + newValue.join('');;
  }
}

inp.addEventListener('click', menuide);
ul {
  display: none;
}

.ul-wide {
  display: grid;
}
<input type="button" id="inp" value="a click on me to make a wonder! :)"></input>

<ul id="menu">
  <li>Smile</li>
  <li>Happy</li>
  <li>Dog</li>
</ul>

1 个答案:

答案 0 :(得分:1)

您的代码中的错误很少: 1.而不是inp.value[0] == 'a' + newValue.join('');; 你可能想写inp.value = 'a' + newValue.join(''); 2.如果您需要添加else

,也可在秒之前
function menuide() {
    menu.classList.toggle('ul-wide');

    var arr = 'b';
    var value = Array.prototype.slice.call(inp.value);
    var newValue = value.splice(1);

    if (inp.value[0] !== 'b') {
        inp.value = arr + newValue.join('');
    } else if (inp.value[0] === 'b') {
        inp.value = 'a' + newValue.join('');
    }
}