如何在原型中更改单击元素innerHTML

时间:2010-12-07 08:56:17

标签: javascript prototypejs

我有像

这样的Html结构
 <p>
      <a onclick="try {
        toggle_detail(&quot;additional&quot;);
        } catch (e) { alert('RJS error:\n\n' + e.toString()); alert('toggle_detail(\&quot;additional\&quot;);'); throw e }; return false;" href="#">Show            </a>
 </p>

 <div id="additional">
    <p>1</p>
    <p>2</p>
    <p>3</p>
    <p>4</p>
 </div>

我正在编写一个原型来显示点击show并隐藏隐藏的附加div。

    $$("."+element_id).each(function(el){
        if(el.visible()){el.hide();

          // el.previous(0).innerHTML="Show";

    }
        else {el.show();
          //    el.previous(0).innerHTML="Hide";
    }
    });

其中element_id =“additional”

如何更新显示/隐藏链接的innerhtml? 我不知道如何更新点击链接的innerHtml .. 请给出建议

1 个答案:

答案 0 :(得分:2)

将此添加到您的click处理程序。

this.innerHTML = (this.innerHTML == 'Show')?'Hide':'Show';

或将调用者作为参数添加到toggle_detail函数

toggle_detail(this, &quot;additional&quot;);

并更改函数以接受该额外参数

function toggle_detail(clickButton, className){
    // do what you want with clickButton //
}

改变each内的文字也没有意义。您应该在each电话之前或之后只执行一次。

加分:您只需使用if(el.visible()) el.hide(); else el.show(),而不是el.toggle()