[JavaScript/jQuery] Sichtbarkeit einer ausgelagerten js-function()

Bexx

Verrückte Erfinderin bei Daniel Düsentrieb
Hi Foris...


Mir platzt gleich der Ars**... Sitze seit Stunden daran eine JavaScript basierte Navigation zu erstellen
für eine LeftBar.
Die Vorgehensweise ist soweit klar, doch hier der Fehler:

Erst einmal stellte sich nach langem Suchen und Nichtsfinden heraus, dass man in einer XHTML-Datei auch
innerhalb eines <script>- Tags die '<' - '>' Zeichen nicht verwenden kann (der Parser kann das nicht richtig interpretieren)...

Naja, kein Beinbruch denkt sich die Azubine, wird der Mist halt ausgelagert...
Von wegen ^^

Leider ist -egal in welcher Form ich das externe Script einbinde- keine der in der Datei enthaltenen Funktionen sichtbar.

Wisst ihr wie sich das lösen lässt? :confused:

Hier das Code-Example:

Code:
<script type="text/javascript">
            navList = new Array("firstPage_page", "secondPage_page" , "thirdPage_page", usw...);

            jQuery(document).ready(function() {

                jQuery('#leftBar').jcarousel({
                    start:0,
                    visible: 8,
                    vertical: true
                    }
                );

               /**
               * Hides all elements
               */
                for(var i = 0; i < navList.length; i++){
                    jQuery('#'+ navList[i]).hide();
                }

            });


/**
 * renders a specific element to display content
 */
function manageActivePages(activePage){
    for(var i = 0; i < navList.length; i++){
        if(navList[i] != activePage + "_page"){
            jQuery('#'+navList[i]).hide();
        }
        else{
            jQuery('#'+activePage + "_page").show();
        }
    }
}
</script>

und hier der Aufbau in JSF:

Code:
<div id="searchbarLeft">
                    <ul id="leftBar" class="jcarousel-skin-tango">
                        <li> 
                            <h:graphicImage id="firstPage" value="#{resource['firstPage.Normal.png']}"
                                             onmouseover="this.src='#{resource['firstPage.MouseOver.png']}'"
                                             onmouseout="this.src='#{resource['firstPage.Normal.png']}'"
                                             onclick="this.src='#{resource['firstPage.Pressed.png']}'; manageActivePages(this.id);"
                                             >                                
                            </h:graphicImage>
                        </li>
                        <li>
                            <h:graphicImage id="secondPage"
                                             value="#{resource['secondPage.Normal.png']}"
                                             onmouseover="this.src='#{resource['secondPage.MouseOver.png']}'"
                                             onmouseout="this.src='#{resource['secondPage.Normal.png']}'"
                                             onclick="this.src='#{resource['secondPage.Pressed.png']}'; manageActivePages(this.id);"
                                             >                                
                            </h:graphicImage>
                        </li>
                        <li>
                            <h:graphicImage id="thirdPage"
                                             value="#{resource['thirdPage.Normal.png']}"
                                             onmouseover="this.src='#{resource['thirdPage.MouseOver.png']}'"
                                             onmouseout="this.src='#{resource['thirdPage.Normal.png']}'"
                                             onclick="this.src='#{resource['thirdPage.Pressed.png']}'; manageActivePages(this.id); "
                                             >                                
                            </h:graphicImage>
                        </li>
                        USW....
                    </ul>
                </div>

/*Weiter unten folgender code :*/
                    <div id="innerContent">                      
                        <div id="firstPage_page">
                            <ui:include src="myContent1.xhtml" />
                        </div>
                        <div id="secondPage_page" >
                            <ui:include src="myContent2.xhtml" />
                        </div>
                        <div id="thirdPage_page">
                            <ui:include src="myContent3.xhtml" />
                        </div>

Das war die urprüngliche Version ^^ <-- t leider nicht, weil der Parser wie gesagt mit den '<' '>' Zeichen nicht zurecht kommt.
Quotes wie &lt; oder &gt; en an dieser Stelle leider auch nicht.

Weitere Versuche:

Code:
<h:body>
    <script type="text/javascript" src="pathToMyExternalisedJSfile/Navigation.js"/>
    
    <script type="text/javascript">
            jQuery(document).ready(function() {

                jQuery('#leftBar').jcarousel({
                    start:0,
                    visible: 8,
                    vertical: true
                    }
                );

               /**
               * Hides all elements
               */
               hideAll();   /*ersetzt erste for-schleife s.o.*/

            });

            /*Zweite funktion mit for - schleife wird in dieser Variante direkt über die Buttons aufgerufen*/

}
</script>
</body>

Fehler des Browsers : Funktion hideAll() und Funktion manageActivePages(this.id) können nicht gefunden werden -.-

Nächste Variante:

Code:
<h:outputScript name="pathToMyExternalisedJSfile/Navigation.js" target="head" />

Gleiches in Gelb:
Fehler des Browsers : Funktion hideAll() und Funktion manageActivePages(this.id) können nicht gefunden werden -______-


Weiß echt nit weiter grad und trete scheinbar auf der Stelle ...
Hilfe wäre meine Rettung grad ;)

Thanks in advance :p
 
Zuletzt bearbeitet:
Lese es mir mal grad durch ...

Danke erstmal, aber als neugieriges Mäuschen möchte ich natürlich auch wissen,
wo der Fehler liegt. Würd halt gern verstehen was ich falsch mache -,-
 
PERFEKT!!

Es funktioniert EINWANDFREI :D


Antwort auf mein Problem findet sich in kuhlmans link :)
 

Neue Beiträge

Zurück