onclick 不会在通过单击另一个链接创建的链接中触发

onclick does not fire in a link that is created by clicking another link

本文关键字:链接 创建 另一个 单击 onclick      更新时间:2023-09-26

Javascript函数writelink创建一个触发函数hiya的链接。 当我在脚本中定义和调用 writelink 时,它有效。 但是,我希望正文包含另一个调用 writelink 以创建链接的链接。 最后一个链接无法触发(但如果我用警报替换 hiya 则有效)。 我是一个完全的新手,所以我希望这是显而易见的。 主要思想是我必须从代码创建一些链接,并且必须触发这些链接才能执行更多代码。 (如果你想让我以完全不同的方式做到这一点,请尝试给我一个完整的例子。

<HTML>
<HEAD>
<script>
function hiya (num){
  alert("hiya " + num);
}
function writelink (num){
  var htmlstr = "<a href='"#'" onclick='"hiya(" + num + ");return false;'">link" + num + "</a>";
  document.write(htmlstr);
}
writelink(1);
</script>
</HEAD>
<BODY>
 <br>
 <a href="#" onclick="writelink(3);return false;">link2</a>;
 <br>
</HTML>
document.write(htmlstr)

您要插入的链接/htmlstr替换整个DOM。使用纯javascript来创建链接:

function writelink(num){
  var link = document.createElement('a');
  link.innerHTML='link '+num;
  link.href='#';
  link.onclick=hiya(num);
  document.body.appendChild(link);
}

只需将writelink()替换为上面的代码即可。

您通常希望将链接添加到某个元素,而不仅仅是<body>,假设一个 id menu<div>

var cnt = document.getElementById('menu');
cnt.appendChild(link); 

更新

<!doctype html>
<html>
<head>
</head>
<body>
<a href="#" onclick="writelink(2);">link2</a>
<script>
function hiya(num) {
  alert("hiya " + num);
}
function writelink(num){
  var link = document.createElement('a');
  link.innerHTML='link '+num;
  link.href='#';
  link.onclick=function(e) {
        hiya(num);
  }
  document.body.appendChild(link);
}
writelink(1);
</script>
</body>
</html>