私はこれが悪い習慣であることを知っています。可能な限り、このようなコードを書かないでください。
もちろん、インライン 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 は悪い習慣です。
正直に言うと、ページの 1 つのセクションを変更するためだけにコードの 3 つの異なるセクションを編集することにうんざりしています。この HTML 要素に特に関連するコードを要素内で定義する方がはるかに簡単で、場合によっては理にかなっている場合もあります。 )そして、ページの残りの部分にぶら下がっている不可解なJSとCSSのクラフトの束がなく、レンダリングがわずかに遅くなります. これは参照の局所性の概念に似ていますが、キャッシュ ミスの代わりに、バグやコードの肥大化に注目しています。