我不同意@mzimmerman,您可以使用 onclick html 属性(尽管 Caja 会操纵它)。在回调函数中,您通过参数访问元素,而不是“this”。
我知道有两种工作方式。第一个是最简单的。在回调函数中,元素将是参数,而不是“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>
第二种方式利用 JQuery 的强大功能在运行时动态绑定回调函数,在这种情况下,回调函数确实通过 'this' 访问元素(并且函数不需要参数)。虽然第二个示例不是必需的(第一个解决方案可以正常工作),但我将其包括在内,因为您会发现 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>