I am building a sliding faq list. I don't want to use any inline event handlers and i don't want to use numbered IDs (answer1, answer2, etc).
This code almost works. The Event.observe for the DD tags is not setting properly. The error I get returned when I test it out is that the element has no properties.
My js:
Code:
var list_ele;
function init_cToggle ( _0 )
{
list_ele = $ ( _0 );
var dt = list_ele.getElementsByTagName('dt');
var dd = list_ele.getElementsByTagName('dd');
for ( var i=0; i < dt.length; i++ )
{
dd [ i ].style.display = 'none';
Event.observe ( dt [ i ], 'click', function ( )
{
cToggle( dd[i] );
} );
}
}
function cToggle ( _0 )
{
_0.toggle();
}
Event.observe ( window, 'load', function ( )
{
init_cToggle( 'faq_list' );
} );
My HTML (yes i link to prototype.js and my other js libs in the header):
HTML Code:
<dl id="faq_list">
<dt>Question 1</dt>
<dd>Answer 1...</dd>
<dt>Question 2</dt>
<dd>Answer 2...</dd>
<dt>Question 3</dt>
<dd>Answer 3...</dd>
<dt>Question 4</dt>
<dd>Answer 4...</dd>
</dl>
Any takers on this one?
|