javascript
  • innerhtml
  • 2013-05-26 4 views -3 likes 
    -3
    <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;"); 
    } 
    

    버튼이 "항목"버튼을 처음 클릭 할 때만 추가되는 이유는 무엇입니까?innerHTML이 첫 번째 클릭에서만 작동하는 이유

    +3

    당신이 http://jsfiddle.net에 대한 데모를 제공 할 수 완료 기능이 하나를 시도? – undefined

    +0

    알았어, 내가 했어, http://jsfiddle.net/mZGS7/, 너 뭐야? 어떻게해야합니까? – undefined

    +0

    아마도 문제는 done()에서 "btn_cont"를 숨기고 있지만 데모 또는 더 많은 코드/html이 없기 때문에 결정()에서 표시하지 말아야한다는 것입니다. – Dampsquid

    답변

    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; 
    } 
    

    그것을 할 더 나은 방법이 많이 있습니다,하지만 난 여기에 대한 아니에요, 당신은 좋은 코드를 작성하는 방법을 배워야한다!

    +0

    squint가 말했듯이, HTML에서 버튼을 정의한 다음 다른 'style.display' 속성을 설정하여 변경해야합니다. 이것을하는 또 다른 방법은 innerHTML이 이미 다시 놓여 있는지 확인하는 것입니다. 코드가 실행되지 않도록 함수를'return; '할 수 있다면 다시 놓을 수 있습니다. –

    +0

    어떻게 이전과 같이 여전히 행동하고 있으며, 동일한 효과를 얻을 수있는 더 나은 방법을 보여줄 수 있습니까? 덕분에 –

    +0

    내가 여기에 뭔가 언급하지 않았을 수 있습니다 : 컨테이너 버튼을 두 번째 시간 버튼을 클릭하지만, 버튼을 클릭 반환! –

    1

    done() 함수에서 divdisplay:none으로 설정했기 때문에.

    decide()에 콘텐츠를 다시 표시하려면 display:block 또는 무엇이든 설정해야합니다.


    버튼이 항상 동일 할 경우, 계속해서 만들거나 파괴 할 이유가 없습니다.

    페이지를로드 할 때 페이지가 표시되도록 설정하고 display을 표시하거나 숨기도록 설정하십시오.

    -4

     
    
    
        window.done = function(){ 
    document.getElementById("but_cont").innerHTML = ""; 
    } 
    
    
     
    
    관련 문제