通常最好将HTML和JS分开。HTML用于视图,JS用于应用程序逻辑。但是以我的经验,html和javascript的极端分离(出于纯净的考虑)并不能使其更易于维护。它实际上很难维护。
例如,有时在设置事件处理程序时会使用以下模式(从ASP.net借用):
<input type="button" id="yourId" onclick="clickYourId()" />
要么
<input type="button" id="yourId" onclick="clickYourId(this)" />
触发事件发生的原因并不神秘。原因是六个月后,您可以检查该元素(例如,在Chrome中),并立即查看触发了哪些javascript事件。
另一方面,假设您正在阅读别人的代码(十万行),并且遇到了触发javascript事件的神奇元素:
<input id="yourId" />
您如何轻松地告诉我这是在调用什么javascript方法?Chrome简化了此过程,但事件可能绑定到ID,或者绑定到容器的第一个子对象。可能事件已附加到父对象。谁知道?祝你好运。:)
另外,我认为完全不向设计人员隐藏javascript可能实际上增加了他们在更新时破坏它的可能性。如果有人为一个魔术有效元素编辑代码,那么他们在代码中有什么指示会告诉他们这是页面上的有效元素?
简而言之,最佳实践是将HTML和Javascript分开。但也要了解,将经验法则推到极致有时会适得其反。我主张采用中间方法。避免大量的内联js。如果确实使用内联,则函数签名应该非常简单,例如:
1. emptyFunction()
2. doCallWithThis(this)
3. atTheExtremOnlyPassOneNumber(2)