【问题标题】:onclick does not fire in a link that is created by clicking another linkonclick 不会在通过单击另一个链接创建的链接中触发
【发布时间】:2013-09-10 03:00:09
【问题描述】:

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>

【问题讨论】:

    标签: javascript onclick


    【解决方案1】:

    document.write(htmlstr) 将整个 DOM 替换为您将要插入的链接 /htmlstr。使用纯 javascript 创建链接:

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

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

    您通常希望将链接添加到某个元素,而不仅仅是&lt;body&gt;,比如说&lt;div&gt;,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>
    

    【讨论】:

    • 我从来没有看到 link1 和 link3 有这个变化。
    • 嗨@nonesuch,不知道你做了什么 - 已经更新了我用作测试的整个脚本。希望对您有所帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多