使用此代码时:
<a href="http://www.google.com" onclick="n();">
现在我如何获取元素类型,如果它是img
获取src
值,但如果是a
则获取href
值。
我试过了:
function n(){
document.print(this);
if(this === "a"){
window.open(this.href);
} else if(this === "img"){
window.open(this.src);
}
}
答案 0 :(得分:2)
this
的值取决于函数的调用方式。
在元素的上下文中调用click事件处理程序,因此this
是元素。
n
被调用时没有明确的上下文,所以它使用默认上下文:window
。
如果你想在元素的上下文中调用n
,那么你需要明确地这样做:
onclick="n.call(this);"
完成后,您可以测试this.tagName
以查看它是什么类型的元素。
或者,将this
作为参数传递给n
:
n(this);
function n(element) {}
或者,停止使用内部事件属性。它们会强制您使您的函数全局化并使用JavaScript丢弃HTML。以编程方式绑定事件处理程序。
document.getElementById('myAnchor').addEventListener('click', n);
答案 1 :(得分:1)
对于单击元素的检查类型,您可以使用下面的代码。这里我使用了tagName属性来完成这项工作。
<!DOCTYPE html>
<html>
<body>
<script>
function n(elem){
if(elem.tagName == "A"){
window.open(elem.href);
} else if(elem.tagName == "IMG"){
window.open(elem.src);
}
}
</script>
<a href="http://www.google.com" onclick="n(this);"> suman</a>
<img onclick="n(this);" src="http://upload.wikimedia.org/wikipedia/commons/thumb/b/b6/Image_created_with_a_mobile_phone.png/220px-Image_created_with_a_mobile_phone.png" alt="sss"/>
</body>
</html>