関数はオブジェクトthis
によって呼び出されるため、 は関数内では機能しません。したがって、は を参照します。window
this
window
コードを関数内にラップする場合は、その関数をラップする必要があります。this
セットを要素に指定して呼び出すかthis
、パラメーターとして を渡します。
<html>
<body>
<!-- call the function and set the this accordingly-->
<img src="foo.png" onload="(function(){...}).call(this)" />
<!-- pass the this as a parameter -->
<img src="foo.png" onload="(function(e){....})(this)" />
</body>
</html>
しかし、これは私には本当に意味がありません:
ページ自体を制御することはできません (ページが呼び出す HTML 文字列のみを制御します)。
imgタグのみを制御できますか? 独自の HTML を出力できるのであれば、'script' タグに何かを入れてみませんか?
更新
スクリプトブロックを使用すると、そこで関数を宣言し、onload イベントで呼び出すことができます。
<script>
function doIt(el) {
// code in here
console.log(el.id); // you could do stuff depending on the id
}
</script>
<img id="img1" src="foo.png" onload="doIt(this)" />
<img id="img2" src="foo.png" onload="doIt(this)" />
これで、多くの画像に対して必要な関数は 1 つだけになりました。
また、本当に凝ったものにする必要がある場合は、スクリプト タグを設定して、jQuery やその他のライブラリを取り込むことができます。
<script src="somepathtojquery"></script>
<script>
// do jquery stuff in herep
これらのハンドラーが多数必要な場合は、jQuery で十分です。
それでも、HTML を完全に制御できるのに、なぜそもそもライブラリを使用しないのかと自問自答しています。:)