使用内联事件作为属性,我可以使用 this
关键字将当前对象传递给函数。我怎样才能通过 Javascript 作为 href 调用它来做到这一点。
以下示例可解决问题:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>JS Bin</title>
<script>
function foo(ob){
alert(ob.innerText);
}
</script>
</head>
<body>
<a href="#" onclick="foo(this)">On Click Call</a> Works Fine!
<br />
<br />
<a href="javascript:foo(this)">Javascript linked</a> Does not work.
</body>
</html>
看看这个 Demo
最佳答案
通常,出于可维护性等原因,最好避免将 JavaScript 直接放入 href
属性中。所以我不会推荐这种方法。但是,如果您出于某种原因确实需要走这条路...
当通过 href
属性调用 JavaScript 时,this
的值为 window
。要获取单击的元素,一种(有点笨拙)的解决方案是为其分配一个可用于选择它的 id
属性。
<a id="js-linked" href="javascript:foo(document.getElementById('js-linked'));">Javascript linked</a>
正如您所看到的,这有点难以阅读。使用 onclick
属性可以让事情变得更干净、更易于维护,因为 this
被分配了被单击元素的值。完全避免内联 JS 并在独立的代码中附加一个 click
监听器可能会让事情变得更干净、更易于维护。
关于javascript - 如何将对象作为 href 从 javascript 传递给函数调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30293723/