2013-07-08 78 views
0

以下代碼每次單擊一個ID爲「button0」的按鈕時都會成功向表單中添加一個按鈕。但是螢火蟲給我的錯誤在javascript中添加按鈕的問題

form1 is null 
[Break On This Error] 

form1.appendChild(element); 

而且新的按鈕將不會盡管它已經 設置爲它的onclick值執行功能「()富」。下面的代碼

var counter = 0; 

function add(){ 
    counter++; 
    var element = document.createElement("input"); 
    element.type = "button"; 
    element.value = "test"; 
    element.name = "button"+counter; 
    element.id = "button"+ counter; 
    element.onclick="foo()"; 
    var form1 = document.getElementById("form1"); 
    var body1 = document.getElementById("b1"); 
    var header = document.getElementById("header"); 
    form1.appendChild(element); 
    header.innerHTML = "Two Buttons"; 
}; 

function foo(){ 
    var butt = document.getElementById("button1"); 
    butt.value = "works"; 
    console.log("works"); 
}; 

add(); 

我也得到一個錯誤的螢火(未定義)如果我使用 document.form1.appendChild(元);

有趣的是我每次點擊都會得到新的按鈕。只是按鈕不起作用。

這裏是我的html

<body id = "b1"> 

<script src = "button-in-code.js"></script> 
<h1 id = "header">Buttons</h1> 
<form id = "form1" name = "form1"> 
<input type="button" id = "button0" name="sel" value="Select all" onclick="add()"> 
</form> 

<hr> 
<address></address> 
<!-- hhmts start -->Last modified: Mon Jul 8 10:07:26 EDT 2013 <!-- hhmts end --> 
</body> </html> 
+0

你可以添加你的HTML嗎?由於大部分問題似乎是找不到名爲'form1'的元素,這可能是一個html問題。它也可能有助於在諸如jsfiddle.net或jsbin.com的站點上設置此名稱 –

+3

您必須將函數分配給'.onclick',而不是字符串。 –

+0

我希望你在DOM上調用這個代碼。 –

回答

0

嘗試添加<script src = "button-in-code.js"></script><form>...</form>的HTML代碼之後。

因爲add();函數是自動執行的,必須在該函數中使用的html元素之後添加javascript代碼。

+0

CoursesWeb的答案固定了add()的執行!謝謝。我留下的唯一問題是新按鈕在單擊時不會執行foo()。 – user2534010

+0

相關的代碼行應該是'element.onclick = foo;'。請注意,這不是附加事件偵聽器的首選方法。我建議使用JS庫來跨瀏覽器簡化事件處理(以及其他問題)。 – MasterAM

+0

感謝MasterAM!這工作。 – user2534010