2015-03-13 139 views
0

我試圖根據點擊按鈕顯示窗體。也就是說,點擊第一個按鈕時,會顯示另外兩個按鈕。但是,生成的新按鈕表現得像虛擬按鈕(onClick事件不起作用)。onClick事件不適用於按鈕

如何解決此錯誤?有沒有其他辦法可以實現相同的功能?


我有以下代碼:

<html> 
<head> 
    <title>Frequently Asked Questions</title> 
    <link rel="stylesheet" type="text/css" href="CSSfiles/faqCSS.css"> 
    <meta charset="UTF-8"> 
    <meta name="viewport" content="width=device-width, initial-scale=1.0"> 
    <script > 
     function addContent(divName, content) { 
      document.getElementById(divName).innerHTML = content; 
     } 
    </script> 
</head> 
<body> 
    <p>Put banner and logo on top; Put footer later </p> 
    <div class="intro"> 
     Looking for help? We provide you information about what can be done when in trouble. Hope you find it helpful! 
    </div> 


    <form name="myForm" class="select"> 
     <input type="button" value="ND" class="select-button" onClick="addContent('myDiv', document.myForm1.ND.value);"><br> 
     <input type="button" value="E" class="select-button" onClick="addContent('myDiv', document.myForm1.E.value);"> 
    </form> 

    <form name="myForm1" class="select"> 
     <textarea name="ND"> 
      <input type="button" value="Earthquakes" class="trial" onclick="addContent('yourDiv', document.myForm2.HW.value);"/><br> 
     </textarea> 
     <textarea name="E"><u>E</u></textarea> 
    </form> 

    <form name="myForm2" class="select"> 
     <textarea name="HW"> 
      <u>Hello world!</u> 
     </textarea> 
    </form> 

    <br><br> 

    <div id="myDiv"></div> 
    <div id="yourDiv"></div> 
</body> 
</html> 
+1

動態添加到DOM的新元素將不會附加任何事件偵聽器,直到您完成。 – randombumper 2015-03-13 12:58:29

+1

你需要閱讀有關事件delegaion – adriano66 2015-03-13 12:59:14

+0

你需要使用較低的jQuery版本,然後使用jquery的實時功能。可能這不是一個完美的答案,但它可以幫助你。 – ajaykumartak 2015-03-13 13:04:36

回答

-1

最初保持各種形式的隱藏。把他們放在理想的部門。點擊每個按鈕只顯示/隱藏預期的形式..

這可以幫助你。

0

我不清楚你是如何將按鈕添加到你的DOM(你可以發佈代碼?)。

但是,說你的按鈕有「MyButton1」的ID,

<button id="MyButton1">Hello</button> 

然後如果你這樣做的jQuery,你的代碼需要有它delegate點擊,掛鉤的對象,已經存在並將包含您的按鈕;例如body元素:

// This is registered before MyButton1 is created. 

$('body').on('click', '#MyButton1', function(event) { 
    alert("Hello, I'm button 1"); 
} 

使用後的JavaScript,您已經創建了新的內容(這樣getElementById可以找到按鈕)平原,您需要onclick事件綁定:

document.getElementById('MyButton1').onclick = function() { 
    alert("Hello again"); 
} 

或(不支持較舊的IE)

document.getElementById('MyButton1').addEventListener("click", 
    function() { 
     alert("Still me"); 
    }); 

在這裏你可以找到a Javascript fiddle的代碼re:javascript方法。