我需要创建一个简单的事件监听器,每次单击按钮时,它将更改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>
答案 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('');
}
}