-1

Smartyを使用して誰かが作成したサイトを更新しようとしています。このページはメンバーディレクトリであり、メンバーの名前をクリックすると、メンバーの詳細が表示されます。ただし、ページを作成した人は、onClickこれを実現するためにインラインイベントを使用しました。数百人のメンバーがいるので、繰り返すコードはたくさんあるようです。

<a href="#" class="expand"
onClick="document.getElementById('detailsbox-{$member.member_id}').innerHTML = 
document.getElementById('details_'+{$member.member_id}).innerHTML;
document.getElementById('divStayTopLeft-{$member.member_id}').style.display='block';
document.getElementById('summary-{$member.member_id}').style.display='none';return false;
">

それを関数にドロップして、それをで呼び出してみましonClickたが、もちろん{member_id}、ページが出力されるときに1つの数値を返すだけです。したがって、すべてのリンクは、その1つのメンバーIDに対して開閉するだけです。

Smarty変数をJavaScript変数に変更してから、onClickイベントでJavaScript変数に正しいメンバーIDを設定する必要があると思いますが、JavaScriptを十分に理解していないため、理解できません。ヒント(または完全な解決策)はありますか?

ありがとう、スコット

4

1 に答える 1

1

javascript関数をオブジェクトまたは他の構造に入れて、グローバル名前空間から取得し、可能であればイベントバインディングをマークアップから削除することをお勧めしますが、これらは宿題の問題として残しておきます。

javascript:

function foo(member_id) {
    document.getElementById('detailsbox-' + member_id).innerHTML = 
        document.getElementById('details_' + member_id).innerHTML;
    document.getElementById('divStayTopLeft-' + member_id).style.display = 'block';
    document.getElementById('summary-' + member_id).style.display = 'none';
    return false;
}

html / tpl:

<a href="#" class="expand" onClick="return foo({$member.member_id});">
于 2012-04-20T21:51:53.650 に答える