JavaScript中的Smarty变量

时间:2012-04-18 23:33:45

标签: javascript smarty

我正在尝试更新某人使用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}只在页面输出时返回一个数字。因此,只有一个成员ID才能打开和关闭所有链接。

我想我需要将Smarty变量更改为JavaScript变量,然后让onClick事件使用正确的成员ID设置JavaScript变量,但我不能很好地理解JavaScript以便弄明白。任何提示(或直接的解决方案)?

谢谢, 斯科特

1 个答案:

答案 0 :(得分:1)

您可能希望将javascript函数放入对象或其他构造中以使其脱离全局命名空间,并在可能的情况下将事件绑定从标记中取出,但我会将这些作为作业问题。< / p>

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