为什么innerHTML只在第一次点击按钮时起作用

时间:2013-05-26 20:57:44

标签: javascript innerhtml

<button class='cp_but' onclick='decide(); return false;'>Item</button>

function decide() {
    var buttons = "<button class='cp_but' onclick='addItem()'>Add</button>" +
        "<button class='cp_but' onclick='done();'>Done</button>";

    document.getElementById("but_cont").innerHTML = buttons;
}

function done() {
    document.getElementById("but_cont").setAttribute("style", "display:none;");
}

为什么只在首次点击“项目”按钮时添加按钮?

3 个答案:

答案 0 :(得分:1)

因为您在div函数中将display:none设置为done()

decide()中,您需要将其设置为display:block或其他任何内容,以便再次查看内容。


如果按钮始终相同,则没有理由继续创建和销毁它们。

在页面加载时将它们放在那里,并设置display以显示和隐藏它们。

答案 1 :(得分:1)

我明白你的问题是什么。您希望再次按下项目时再次显示按钮(按下完成后)。问题是它们被设置为display: none,因此它们不会显示!你必须在你的函数中添加这一行:

function decide() {
    var buttons = "<button class='cp_but' onclick='alert(\"test\")'>Add</button>" +
        "<button class='cp_but' onclick='done();'>Done</button>",
         el = document.getElementById("but_cont");
    if(el.style.display === 'none') el.style.display = 'block'; 
    el.innerHTML = buttons;
}

有很多更好的方法可以做到,但我不是为了这个,你应该学习如何编写好的代码!

答案 2 :(得分:-4)

尝试使用此功能进行完成功能



    window.done = function(){
 document.getElementById("but_cont").innerHTML = "";
}