0

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>
4

1 回答 1

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的 a 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>
于 2013-09-09T17:58:02.063 回答