javascript - 检查 "this"的元素类型

标签 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

最佳答案

this 的值由函数的调用方式决定。

点击事件处理程序是在元素的上下文中调用的,因此 this 就是该元素。

n 在没有显式上下文的情况下被调用,因此它使用默认上下文:window

如果你想在元素的上下文中调用n,那么你需要明确地这样做:

 onclick="n.call(this);"

一旦获得,您可以测试 this.tagName 以查看它是什么类型的元素。

<小时/>

或者,将 this 作为参数传递给 n:

n(this);
function n(element) {}
<小时/>

或者,停止使用内部事件属性。它们迫使您将函数设为全局函数,并在 HTML 中乱扔 JavaScript。以编程方式绑定(bind)您的事件处理程序。

document.getElementById('myAnchor').addEventListener('click', n);

关于javascript - 检查 "this"的元素类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21497419/

相关文章:

javascript - 使用 JavaScript 打开/关闭元素的 CSS

html - 段落大小的问题

javascript - 如果相应的文本区域被调整大小,如何保持按钮的位置?

php - 下拉菜单(列表)与 I.E. 不兼容?

html - Bootstrap Multiple Items Carousel(一次显示多个轮播元素)

javascript - React Native Share 不在 iOS 上显示应用程序列表

javascript - 多个动态表单提交后运行函数

html - 简单的 CSS\HTML DIV 布局问题

javascript - buster.js/sinon 有类似 `jasmine.any()` 的东西吗?

Javascript 一键实现两个功能