2013-01-15 58 views
2

我有以下腳本更改的onClick功能爲目標的編輯按鈕

var counter = 0; 
function appendText(){ 

     var text = document.getElementById('usertext').value; 

      if (document.getElementById('usertext').value){ 

       var div = document.createElement('div'); 
       div.className = 'divex'; 

       var li = document.createElement('li'); 
       li.setAttribute('id', 'list'); 
       div.appendChild(li); 

       var texty = document.createTextNode(text); 
       var bigdiv = document.getElementById('addedText'); 

       var editbutton = document.createElement('BUTTON'); 
       editbutton.setAttribute('id', 'button_click'); 
       var buttontext = document.createTextNode('Edit'); 
       editbutton.appendChild(buttontext); 

       bigdiv.appendChild(li).appendChild(texty); 
       bigdiv.appendChild(li).appendChild(editbutton); 

       document.getElementById('button_click').setAttribute('onClick', makeAreaEditable()); 

       document.getElementById('usertext').value = ""; 
       counter++; 
     }   
};               

var makeAreaEditable = function(){  

    alert('Hello world!'); 
}; 

我要當按下編輯鍵(每個被textarea的下追加編輯按鈕的makeAreaeditable功能工作)..在這種狀態下,腳本會在我點擊「上下文」按鈕時發出警報。

以下是html。附:我需要這個純JavaScript,如果你能幫助。的感謝

<textarea id="usertext"></textarea> 
    <button onClick="appendText()">Add text </button> 


    <div id="addedText" style="float:left"> 
    </div> 
+1

'的setAttribute之前添加onclick財產(的「onClick」,makeAreaEditable());'將**執行** makeAreaEditable函數並將它的返回值賦給'onclick'屬性。可能不是你想要的。嘗試刪除函數名稱後的'()'。 – jbabey

回答

2

代替:

document.getElementById('button_click').setAttribute('onClick', makeAreaEditable()); 

你需要這樣做:

editbutton.onclick = makeAreaEditable; 
除非你想執行它

,而不是獲得的

該函數的名稱不用支架來自DOM的元素使用document.getElementById('button_click') 您可以使用已經創建了editbutton變量。這個對象就是你正在尋找

邊注的DOM元素: 標準的方式來做到這一點是附加元素

+0

謝謝!問題解決了! – emcee22

+1

歡迎您! – canolucas

+0

我又被卡住了......我怎麼能在我的makeareaeditable函數中得到li元素的值....文本分配給它..我試過這樣的東西:'code'var makeAreaEditable = function(){ \t var textElement = document.getElementById('list')。value; \t \t alert(textElement); }; 'code' – emcee22