Javascript 事件委派不能正确使用if-else语句
我已经为一个HTML容器分配了一个事件侦听器,当用户单击“再次播放”按钮时,“if”语句中的代码应该执行。单击“再次播放”按钮时,没有发生任何事情,控制台上也没有任何记录。我尝试了各种不同的方法,比如测试元素是否有特定的类名等等 以下是相关的HTML代码:Javascript 事件委派不能正确使用if-else语句,javascript,Javascript,我已经为一个HTML容器分配了一个事件侦听器,当用户单击“再次播放”按钮时,“if”语句中的代码应该执行。单击“再次播放”按钮时,没有发生任何事情,控制台上也没有任何记录。我尝试了各种不同的方法,比如测试元素是否有特定的类名等等 以下是相关的HTML代码: <div class="play-again-btn"> <input type="button" class="play-btn" value="PLAY AGAIN"> </div> 以下是播放方法
<div class="play-again-btn">
<input type="button" class="play-btn" value="PLAY AGAIN">
</div>
以下是播放方法:
playAgain: (event) => {
let finishedPlayer, parentEl;
console.log(event.target);
//1. only action below code if correct button is clicked (correct target element is clicked)
if (event.target.nodeName == "input") {
//2. delete existing character from finish line
finishedPlayer = document.querySelector(DOMstrings.finishBox);
finishedPlayer.removeChild(finishedPlayer.childNodes[0]);
//3. bring character select pop up
document.querySelector(DOMstrings.usersInput).style.visibility = "unset";
//4. remove leaderboard pop up
parentEl = document.querySelector(DOMstrings.endContainer);
parentEl.removeChild(parentEl.childNodes[1]);
}
},
属性存储节点的类型(Text
、Element
、Comment
等),而不是节点表示的HTML元素的标记名
因此,Node#nodeName
永远不会等于“input”
,您的代码也不会运行
要检查标记名,请改用:
此外,与其如此,还不如检查单击的元素是否是您的按钮,因此,如果您可以选择该按钮,则最好对其进行相等性检查:
if (event.target === document.querySelector(selectorOfButton)) {
对不起,我没有回应,我已经离开了。谢谢你的回复。不幸的是,这两个建议都不起作用,它仍然一事无成。这不是世界末日,因为我已经做了一些改变,所以这不再是必要的!再次感谢
if (event.target.tagName == "input") {
if (event.target === document.querySelector(selectorOfButton)) {