Dan,
Thank you so much for your help and your code rewrite! I have been struggling with javascript for months in order to try to do this task, and given the prevalence of collapsible menus, I suspected that I was making things rather harder than they needed to be. I had heard about jQuery and other libraries, but it had never occurred to me to look at them for a way to do this.
As you might have been able to tell by the link at the end of the code, I plan to use this code within our LibGuides home page in order to list the subject categories and individual guides within those categories. This is roughly what I would like it to resemble (I need to make a few changes unrelated to the code you provided):
http://libguides.gvsu.edu/content.php?pid=63144
Our current LibGuides home page is simply an A-Z list of guides, but a few librarians from other institutions have asked me how I did that. I imagine that others may ask me how I did this, as well. Would it be acceptable to you if I posted this code on my blog (http://llyfrgellydd.info)? I only have about 60 subscribers, so it is not a huge audience, but I think that others might find your code very useful. It goes without saying that I would attribute authorship to you (and add a line to the code attributing authorship).
Again, thank you for your help with this - it is a relief to have an elegant, cross-platform compatible solution after all this time!
-Laura
>>> On 11/5/2009 at 9:23 AM, <[log in to unmask]> wrote:
> Laura,
>
> I don't have a solution for the problem at hand but I would like to suggest
> an alternate course of development.
>
> When JavaScript is used to manipulate the DOM tree or add behaviours to a
> webpage it is almost always better to use a cross-browser library then to code
> it by hand.
> The problems you are encountering between IE and Firefox are only amplified
> when a broader selection of browser and browser versions are taken into
> consideration.
> Relying on a third party to do browser compatiblity and performance
> optomiztions frees up your time as a developer to focus on implementing the
> desired behaviour.
> There are many options out there -- Prototype, Dojo, MooTools, etc. -- but
> jQuery is my library of choice.
>
> I took the liberty of rewriting the webpage in question to create the
> behaviour you desired with a few lines of jQuery.
> http://gist.github.com/227059
> I commented the code thoroughly so you or anyone else new to jQuery should
> be able to follow what's going on and why.
>
> For further reading on the nature and use of jQuery see:
> http://docs.jquery.com/
> http://api.jquery.com/
>
> best of luck,
> -dan
> ----------
> Dan Brubaker Horst
> Project / Application Developer - Hesburgh Library of Notre Dame
> ________________________________________
> From: Code for Libraries [[log in to unmask]] On Behalf Of Laura
> Harris [[log in to unmask]]
> Sent: Tuesday, November 03, 2009 1:37 PM
> To: [log in to unmask]
> Subject: [CODE4LIB] Javascript question - works in FF, but not in IE
>
> Hello, new subscriber here...I'm trying to fix some javascript. It works as
> expected in Firefox, but not in Internet Explorer. FWIW, am using FF 3.0.14
> and IE 7.0.6.
>
> The code is up on pastebin here: http://pastebin.com/m20949cd1
>
> I'm aware that setAttribute & getAttribute are buggy in Internet Explorer, so
> (in an alternate version of the code) I replaced the toggle bit in function
> createToggleFunction with the following:
>
>
> if (toggleElement.className == 'collapsibleClosed') {
> toggleElement.className = 'collapsibleOpen';
> toggleElement.src = OPEN_IMAGE;
> } else {
> toggleElement.className = 'collapsibleClosed';
> toggleElement.src = CLOSED_IMAGE;
> }
>
>
> However, I must assume I did something wrong in the code above, because it
> doesn't work in Firefox.
>
> Any thoughts? Let me know if I need to provide more information.
>
> Thanks,
>
> Laura Harris
> Web Services Librarian
> Grand Valley State University
> Allendale, MI 49401
|