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)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()上記のコードに置き換えるだけです。

通常、単に ではなく、特定の要素へのリンクを追加したいでしょう。id を持つ<body>a<div>としましょう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 に答える