我知道这是不好的做法。如果可能的话,不要写这样的代码。
当然,我们总是会发现自己处于这样的情况:一个巧妙的内联 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分钟后,这是一个可怕的,可怕的想法我可以攻击整个股利(或任何) 并且我在页面的其余部分没有一堆神秘的 JS 和 CSS 杂物,从而稍微减慢了渲染速度。这类似于引用局部性的概念,但我们关注的是错误和代码膨胀,而不是缓存未命中。