我知道這是不好的做法。如果可能的話,不要這樣寫代碼。內聯Javascript(HTML)如何工作?
當然,我們總是會發現自己處於一個巧妙的內聯Javascript片段可以快速解決問題的情況。至於我可以告訴這個
<a href="#" onclick="alert('Hi')">Click Me</a>
在功能上一樣
:我追求在充分了解發生了什麼利益這個查詢(以及潛在的陷阱),當這樣的事情是寫
<script type="text/javascript">
$(function(){ // I use jQuery in this example
document.getElementById('click_me').onclick =
function() { alert('Hi'); };
});
</script>
<a href="#" id="click_me">Click Me</a>
從這裏推斷,似乎分配給屬性onclick
的字符串被插入到分配給該元素的點擊處理程序的匿名函數中。這是真的嗎?
因爲我開始做這樣的事情:
<a href="#" onclick="$(this).next().fadeIn(); return false;">Display my next sibling</a> <!-- Return false in handler so as not to scroll to top of page! -->
其中一期工程。但我不知道這是多少破解。它看起來可疑,因爲沒有明顯的功能正在返回!
你可能會問,你爲什麼這麼做,史蒂夫?內聯JS是不好的做法!
好吧,說實話,我已經厭倦了編輯代碼的三個不同部分來修改頁面的一個部分,特別是當我只是做一些原型來看它是否可以工作時。這是非常容易,有時甚至是有意義的,特別是與這個HTML元素相關的代碼被定義爲在之內:當我2分鐘後決定這是一個可怕的,可怕的想法時,我可以將整個div或者其他),並且我沒有在頁面的其餘部分懸掛一堆神祕的JS和CSS cruft,減慢渲染速度。這與引用的局部性的概念相似,但是我們正在查看錯誤和代碼膨脹,而不是緩存未命中。
你是對的,這是一個匿名函數。 – bhamlin
您需要在DOMready事件上掛鉤'#click_me'的查詢,或將該腳本放置在該節點之後。 – Bergi
在控制檯中,執行'document.getElementById(「click_me」)。onclick;'。或者提醒它。你會看到它在一個函數中。 –