0

htmlを配列にプッシュする関数があります。実行されると、htmlが返され、jQueryの.htmlを使用する他の関数によってhtmlがdomにプッシュされます。

htmlをプッシュする関数には、テーブルがクリックされたときに呼び出されるメソッドを含むパラメーターがあります。

しかし、onclickを使おうとすると、関数が文字列(関数の内容全体)としてレンダリングされます。

私は何が間違っているのですか?

function GenerateTapHeader(TabName, clickCallbackFunction) {
    var tmpTapHeaderHTML = new Array();

    tmpTapHeaderHTML.push('<table id="Table_' + TabName + '" class="TapHeader" onclick="' + clickCallbackFunction + '">');
    tmpTapHeaderHTML.push('<tr>');
    tmpTapHeaderHTML.push('<td></td><td></td>');
    tmpTapHeaderHTML.push('<td><span></span></td>');
    tmpTapHeaderHTML.push('<td></td>');
    tmpTapHeaderHTML.push('<td><div>' + TabName + '</div></td>');
    tmpTapHeaderHTML.push('<td></td>');
    tmpTapHeaderHTML.push('<td></td>');
    tmpTapHeaderHTML.push('</tr>');
    tmpTapHeaderHTML.push('</table>');

    return tmpTapHeaderHTML.join('');
}
4

2 に答える 2

1

onclick関数を実行するには、グローバルスコープに参照が必要であるため、これを行うことはできません。

<a oncklick="runme()">runme()</a>

グローバルスコープ(ウィンドウ)に関数runmeが存在する必要があるため、これを行う必要があります(clickCallbackFunctionNameは、呼び出したい関数のNAMEを含む文字列である必要があります)。

function GenerateTapHeader(TabName, clickCallbackFunctionName) {
    var tmpTapHeaderHTML = new Array();

    tmpTapHeaderHTML.push('<table id="Table_' + TabName + '" class="TapHeader" onclick="' + clickCallbackFunctionName + '();">');
    tmpTapHeaderHTML.push('<tr>');
    tmpTapHeaderHTML.push('<td></td><td></td>');
    tmpTapHeaderHTML.push('<td><span></span></td>');
    tmpTapHeaderHTML.push('<td></td>');
    tmpTapHeaderHTML.push('<td><div>' + TabName + '</div></td>');
    tmpTapHeaderHTML.push('<td></td>');
    tmpTapHeaderHTML.push('<td></td>');
    tmpTapHeaderHTML.push('</tr>');
    tmpTapHeaderHTML.push('</table>');

    return tmpTapHeaderHTML.join('');
}
于 2013-02-20T16:03:16.327 に答える
0

テーブルをDOMに追加するまで待ってから、次の手順を実行します。

$('#Table_' + TabName).click(function(){
    clickCallbackFunction();
});
于 2013-02-20T15:37:47.727 に答える