事件监听器不起作用

ja.*_*ja. 4 javascript event-listener

任何想法为什么这不起作用.

单击时按是按钮可以使用一次 - 否按钮不起作用

function $(x) {
    return document.getElementById(x);
}

var glob = 0;

function new_index() {
    glob += 1;
    return "d" + glob;
}

function play() {
    say("Hello is JS Fun?");
    response("No",
        function() {
            say("Oh dear")
        });
    response("Yes",
        function() {
            say("Great:");
        });
}

function say(x) {
    $("txt").innerHTML += x;
}

function response(Txt, Fun) {
    var n = new_index();
    var s = "<button id='" + n + "'>" + Txt + "</button>";
    say(s);
    var xx = $(n);
    // xx.onclick=Fun;
    xx.addEventListener("click", Fun);
}

play();
Run Code Online (Sandbox Code Playgroud)
<div id="txt"></div>
Run Code Online (Sandbox Code Playgroud)

小智 8

这是因为每次设置innerHTML时,它都不会像您想象的那样添加,它会将innerHTML设置为一个新值,并通过附加旧事件侦听器来删除旧元素.

  • Goodness inerHTML + = x不是纯粹的附加操作,但有副作用!哇下一步 (3认同)