javascript - 如何将对象作为 href 从 javascript 传递给函数调用

标签 javascript

使用内联事件作为属性,我可以使用 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/

相关文章:

javascript - jwplayer 从 yell cdn 流式传输

javascript - express JS - 无法从其他外部服务器接收 GET 响应到我的 View

javascript - 使用动态计算的名称访问对象属性

javascript - 比较两个 HTML 代码块

javascript - 如何将 TypeScript 对象转换为普通对象?

javascript - 如何判断插入键是否被按住

javascript - Angular '<controller> as <variable>' 不是一个函数,在错误( native )中未定义

javascript - 在 ember 中继续调用 mouseDown 上的函数

javascript - 将参数从 php 文件传递​​到 javascript 文件

javascript - 使用 Yadda 和 Protractor 重用步骤定义,迭代所需的文件