按钮侦听器JavaScript
我有一个有趣的bug,我不知道它是否来自javascript中我忽略的一点,但它毫无意义 这是一个小型的消息传递应用程序,您可以在其中玩chifoumi 在这张照片中,我们收到了两个游戏请求,其特征是“应答(Répondre au-jeu)”按钮,当我们应答时,该按钮被禁用!到目前为止是的,但问题是,你在这里看到的第一个按钮不再被监听,事实上,这就好像与按钮相关联的侦听器已经自行飞行一样 所以我不明白为什么按钮失去了它的侦听器;知道在点击另一个按钮之前,它可以完美地工作(按下按钮只会填充底部的文本框,如果我不发送它,按钮将保持活动状态) 这是我的密码:按钮侦听器JavaScript,javascript,sockets,debugging,button,listener,Javascript,Sockets,Debugging,Button,Listener,我有一个有趣的bug,我不知道它是否来自javascript中我忽略的一点,但它毫无意义 这是一个小型的消息传递应用程序,您可以在其中玩chifoumi 在这张照片中,我们收到了两个游戏请求,其特征是“应答(Répondre au-jeu)”按钮,当我们应答时,该按钮被禁用!到目前为止是的,但问题是,你在这里看到的第一个按钮不再被监听,事实上,这就好像与按钮相关联的侦听器已经自行飞行一样 所以我不明白为什么按钮失去了它的侦听器;知道在点击另一个按钮之前,它可以完美地工作(按下按钮只会填充底部
socket.on("chifoumi", function(result) {
var win = document.getElementById("content");
var date = new Date(result.date);
var hours = date.getHours();
var minutes = date.getMinutes();
var seconds = date.getSeconds();
if (date.getHours() < 10)
hours = "0" + date.getHours();
if (date.getMinutes() < 10)
minutes = "0" + date.getMinutes();
if (date.getSeconds() < 10)
seconds = "0" + date.getSeconds();
let main = document.getElementsByTagName("MAIN");
if (result.from == currentPseudo) {
main[0].innerHTML += "<p class=\"chifoumi\">" + hours + ":" + minutes + ":" +
seconds + " - [chifoumi] : Défi envoyé à " + result.to + "</p>";
} else if (result.from != currentPseudo) {
main[0].innerHTML += "<p class=\"chifoumi\">" + hours + ":" + minutes + ":" +
seconds + " - [chifoumi] : " + result.from + " te défi à Paper-Rock-Scissors-Lizard-Spock. <button class=" + result.from + " name = \"btn\"> Répondre au jeu </button></p > ";
win.className = "buzz";
buttonListener();
}
});
我认为我剩下的代码对你没有任何好处。我不接触其他地方的听众
我提前向您表示感谢。代表用户253751回答 这可能是因为您正在设置innerHTML。通过设置innerHTML,您告诉浏览器删除main[0]中的所有内容,然后将innerHTML字符串中的内容添加回。但是innerHTML字符串没有任何事件侦听器。所以,你没有得到一个。尝试改用appendElement,它会添加一个新元素,而不会更改任何其他元素
按钮被禁用了吗?如果禁用,则不会检测到任何单击事件。我说的是第一个保持活动状态的按钮,很抱歉,我已修复了键入错误。如果代码进入
result.from==currentPseudo
,则不会添加任何事件侦听器。此条件只会使发送方与质询方和接收方区分开来,在我们的情况下,我们是接受者,所以我们总是进入另一个世界。而且,在你点击任何按钮之前,它们都可以工作!侦听器在那里,单击按钮,然后发送,删除与此按钮关联的侦听器。怎么可能呢?事实上,点击按钮会在底部显示一个文本。在我发送响应之前,按钮不会关闭。在发送之前,按钮都会在底部显示不同的文本!但是,如果我单击发送,那么目标按钮将停用此功能(这是正常的),但另一个将丢失其侦听器。
function buttonListener() {
let btn = document.getElementsByName("btn");
console.log(btn);
for (let bt of btn) {
////LISTENER MULTI BOUTON
console.log(bt);
bt.addEventListener("click", function(e) {
startGame = 1;
msgChiff = "/chifoumi @" + this.className + " :";
document.getElementById("monMessage").value = "/chifoumi @" + this.className + " :";
});
}
}