2013-08-16 62 views
0

我有關於以下代碼之間的區別的問題。哪種方法更可取?爲什麼?優點缺點?JavaScript onclick事件按鈕/函數elemtn_onclick()的區別

更多更好的問題:除了onclick以外,還有哪些其他活動?關於變化事件呢?

方法1

HtmlId.onclick = function() { 

alert("whatever"); 

} 

方法2

function HtmlId_onclick() { 

alert("whatever"); 

} 

我之所以「M好奇的是,方法#1沒有工作,所以我只是雙擊該按鈕在視覺工作室中它自動添加了可以工作的功能,那麼爲什麼在手動方式時自動執行這些操作?

+1

Visual Studio會自動生成惡意代碼,這是跨瀏覽器的錯誤,並且不能很好地擴展。以手動方式做事的原因是因爲你會知道發生了什麼,而不是依靠一個工具爲你執行「魔術」。 – zzzzBov

+0

這很有道理。那麼爲什麼方法1不工作而方法2工作? (我在IE 10中) – mwilson

+1

看起來你使用的是ASP.NET,這意味着任何服務器控件都會有一個自動生成的ID屬性來執行唯一性。這意味着'HtmlId'不會是元素的適當ID,相反,您會發現ID將沿着'ParentControl_0_AncestorControl_3_HtmlId'的行。通常情況下,最好使用類或'[data - *]'屬性選擇器在綁定事件之前選擇一個元素。方法1中的示例沒有考慮到ID不是有效的JavaScript標識符或者已被全局覆蓋的可能性。 – zzzzBov

回答

1

方法#2是編寫函數的更好方法,您應該總是嘗試手動編寫它,特別是在視覺工作室中。它有時可能會添加非常奇怪的代碼或誤解問題,或者只是輸入錯誤的變量和內容,然後就會出現問題而不知道如何解決問題。