I have html like below:
<div onclick=" callJavascript()">
<span id="abc"> abc </span>
<span id="def"> def </span>
<span id="ghi"> ghi </span>
</div>
当我点击'abc'或'ghi'时,在
function callJavascript()
内部有没有任何地方可以查找我点击的是哪个标签的id?
I have html like below:
<div onclick=" callJavascript()">
<span id="abc"> abc </span>
<span id="def"> def </span>
<span id="ghi"> ghi </span>
</div>
function callJavascript()
内部有没有任何地方可以查找我点击的是哪个标签的id?
有的:
对于非IE浏览器:
function callJavascript ( e ) {
alert(e.target); // the DOMElement object
alert(e.target.id); // the object's id
}
对于IE浏览器:
function callJavascript ( e ) {
alert(e.srcElement); // the DOMElement object
alert(e.srcElement.id); // the object's id
}
您仍然需要调整您的HTML代码:
<div onclick=" callJavascript(e)"> // replace "e" by "event" in IE.
<span id="abc"> abc </span>
<span id="def"> def </span>
<span id="ghi"> ghi </span>
</div>
您需要在onclick监听器中添加事件参数,以便在监听器内部可以访问事件。
<div onclick="callJavascript(event)">
然后使用 target
或 srcElement
属性来获取DOM元素。
function callJavascript(e) {
var target = e.srcElement || e.target;
alert(target.id);
}
工作中演示
$(function() {
$("span").click(function(e) {
alert(this.id);
}
});
获取属性或类:
<div class="foo" my_attr="foo2" onclick="callJavascript(event)">
function callJavascript(e) {
var target = e.srcElement || e.target;
console.log(target.className);
console.log(target.getAttribute('foo2'));
}
尝试:
<script>
function callJavascript() {
alert(event.target.id);
}
</script>
<div onclick=" callJavascript(e)">
,使用event
而不是e
将能够实现跨浏览器兼容。 - DanielBcallJavascript()
有另一个参数会怎样? - undefinedonclick
是例如onclick="callJavascript('somevalue')"
) - undefined