我最近開始玩javascript的樂趣。 我通過大部分w3schools教程(包括jquery ofc)工作。如何在點擊一個按鈕時調用某個功能?
我卡住的地方只需點擊一個按鈕即可調用一個函數。
我的代碼(編輯提供一個最小的,完整的和可驗證的例子)
$("#linkId1").on("click", function(){
setTimeout(function(){
function decryptText() {
alert("decrypted!");
}
$("tableId").append('<a id="decryptID" class="button">decrypt</a>');
$("#decryptID").on("click", decryptText);
}, 500);
});
HTML:
<a id="linkId1">firstLink</a>
<table>
<tbody>
<tr>
<td id="tableId">
<a id="button1" class="button"></a>
<a id="button2" class="button"></a>
</td>
</tr>
</tbody>
</table>
這裏就是我已經嘗試過:
- 調用函數的不同方法
製作功能decryptText()全局或局部
- 創建它(因爲我在另一篇文章,這是更好地使用
eventListener
不是將onclick
屬性在閱讀後添加一個eventListener
到按鈕HTML標籤)。〜我混合 基本的js與jQuery方法在這裏 - 大錯誤。
瀏覽器控制檯沒有給我任何錯誤 - 當我改變編寫了一下,我得到:Reference Error: decryptText() not defined
S.
編輯: 我試圖做這一切僅在jQuery中,選擇器和事件處理。如你所見,我將示例代碼更改爲簡單的加密和解密腳本的開始 - 核心問題仍然保持不變。
使用Firefox檢查器工具進行檢查,這次該元素沒有綁定任何事件。
A的信息可能是重要的一條是,之前onclick ajax handler
從元件#linkId1
打來電話,插入包含表到HTML整個DIV,你可以在HTML看錶不存在。
你不應該混這麼多不同的「風格」,開始與(的addEventListener,onclick屬性,jQuery的也是混合)......既然你已經使用jQuery,我會建議你堅持事件處理。 _「我卡住的地方只需點擊一個按鈕即可調用一個功能」_ - 是不是真的?如果你只是想在一個按鈕上點擊一個函數,爲什麼你的代碼中有多個setTimeouts,那些應該實現的是什麼? – CBroe
通常,當您通過HTML屬性使用「老派」事件處理時,函數必須在解析器遇到元素之前存在。通過動態生成和插入元素,您將在這裏增加複雜程度,不確定可能會如何影響它。但是如果你需要進一步的幫助分析這個,那麼請首先提供一個[mcve]。 – CBroe
也在這裏添加相關的html。 –