現在のアプローチにはいくつかの問題があります-
function
がキーワードです。パラメータとして使用することはできません。
- あなたがそれを使用している方法では、ここに関数名が必要です。コールバックを渡しても役に立ちません。
アンカーを文字列として返すのではなく、要素として返します -
function createAnchor(text, clickHandler) {
var link = document.createElement('a'); // creates an anchor element
link.href = "#"; // sets the href
link.onclick = clickHandler; // sets the click handler
link.innerHTML = text; // assigns the inner html string
return link; // now return it
}
その後 -
var myAnchor = createAnchor('link', function () {
alert('test');
});
// Add this element wherever you want
createElementおよびelementに関するドキュメントを参照してください。
編集
このアンカー要素を既存の DOM 要素に子として追加する場合は、appendChildを使用します-
var myAnchor = createAnchor('link', function () {
alert('test');
});
document.getElementById('x').appendChild(myAnchor);
ライブ JSFiddle。
編集2
アンカー文字列が本当に必要な場合は、上記の関数を使用してアンカー要素を作成し、それを子として目的の要素に追加してからinnerHTML
、親で使用します。アプローチはここに示されています -
function createAnchorString(parentId, text, clickHandler) {
var link,
parent;
link = createAnchor(text, clickHandler); // call the previous function
parent = document.getElementById(parentId);
parent.appendChild(link);
return parent.innerHTML;
}
var myAnchorString = createAnchorString('x', 'link', function () {
alert('test');
});
alert(myAnchorString);
ライブフィドル。