onclick html プロパティを使用できます (Caja が操作しますが)。コールバック関数では、「this」ではなく、引数を介して要素にアクセスします。
私が仕事を知る方法は2つあります。最初のものは最も単純です。コールバック関数では、「this」ではなく要素が引数になります。
<html>
<head>
<script>
function onClickCallback(element){
console.log('element.id ' + element.id);
element.value = 'Clicked!';
}
</script>
</head>
<body>
<input type="button" name="b1" id="b1" value="Click me" onclick='onClickCallback(this)' />
</body>
</html>
2 番目の方法では、JQuery の機能を使用して、実行時にコールバック関数を動的にバインドします。この場合、コールバック関数は「this」を介して要素にアクセスします (関数への引数は必要ありません)。この 2 番目の例は必要ありませんが (最初の解決策は問題なく動作します)、JQuery が提供するライブラリなどを見つけることができるので、これを含めます。
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<script>
// like onload but doesn't wait for images, only the dom
$(document).ready(function() {
// bind the click handler at run time
$('#b1').click(onClickCallback);
});
function onClickCallback(){
console.log('this.id ' + this.id);
this.value = 'Clicked!';
}
</script>
</head>
<body>
<input type="button" name="b1" id="b1" value="Click me" />
</body>
</html>