2012-04-18 10 views
-1

Я пытаюсь обновить сайт, созданный с помощью Smarty. Страница представляет собой каталог-член, в котором, когда вы нажимаете на имя члена, раскрываются детали участника. Тем не менее, человек, создавший страницу, использовал событие inline onClick для достижения этого. С нескольких сотен членов, похоже, много кода, чтобы повторить:Переменные Smarty в JavaScript

<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} просто возвращает один номер, когда страница выводится , Таким образом, все ссылки просто открываются и закрываются для одного идентификатора участника.

Я предполагаю, что мне нужно изменить переменные Smarty на переменные JavaScript, а затем событие onClick установить переменную JavaScript с правильным идентификатором участника, но я не понимаю JavaScript достаточно хорошо, чтобы понять это. Любые советы (или прямые решения)?

Спасибо, Скотт

+0

Для дальнейшего использования, может кто-то догадку, почему мой вопрос был downvoted? – sharcupine

ответ

1

Вы, вероятно, хотите поставить яваскрипт функции в объект или другую конструкцию, чтобы получить его из глобального пространства имен и принять событие связывания из разметки, если это возможно, но я «Я оставлю их в качестве домашних заданий.

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});"> 
+0

Спасибо. На данный момент эта проблема была перенесена на задний план, поэтому у меня еще не было возможности попробовать свое решение. Но я буду голосовать, когда смогу вернуться к этому. Еще раз спасибо! – sharcupine

+0

Я, наконец, вернулся к этому. Он работает отлично. Спасибо. – sharcupine

Смежные вопросы