我知道这不是什么好做法.如果可能的话,不要编写这样的代码.
当然,我们总是会发现,巧妙的内联Javascript代码片段可以快速解决问题.
我之所以追问这个问题,是为了充分了解在编写以下代码时会发生什么(以及潜在的trap ):
<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元素相关的代码定义为right within个元素要容易得多,有时甚至是有意义的:当我在2分钟后决定这是一个非常非常糟糕的 idea 时,我可以删除整个div(或者其他任何内容),并且我没有一堆神秘的JS和css烂摊子在页面的睡觉上徘徊,从而略微减慢了呈现速度.这类似于引用局部性的概念,但是我们看到的不是缓存未命中,而是bug和代码inflating .