检查“this”元素的类型

时间:2014-02-01 11:24:18

标签: javascript html

使用此代码时:

<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);
    }
}

Not jQuery

2 个答案:

答案 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>