onclick不会在通过单击其他链接创建的链接中触发

时间:2013-09-09 17:41:24

标签: javascript onclick

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>

1 个答案:

答案 0 :(得分:1)

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>,让我们说<div>的ID为menu

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>