vhspec: Fehlermeldung: function not defined

Hallo,
ich lerne gerade js. ihr werdet also noch öfter von mir hören!
im moment habe ich ein "function not defined" - Problem. zum hintergrund:

jquery wurde im head eingebunden, genauso wie diefunktion unten.
die jquery effekte können auch ohne probleme aufgerufen werden.

nur die folgende funktion nicht (die ich selber geschrieben habe):

------------------------
<script type="text/javascript">
function hideshow(divid){
var collection = window.document.getElementsByTagName('div');
    for (var x=0; x<collection.length; x++)
        {
        if (collection[x].id.match(/slide/gi) AND collection[x].id.length > 0 AND collection[x].id != divid)
        {var divhide = "div#" + collection[x].id;
$(divhide).hide();}
        else if (collection[x].id = divid)
        {
         var divshow = "div#" + divid;
$(divshow).slideDown("slow"); }}}
</script>

-----------------------

es kommt im firefox die fehlermeldung "function hideshow not defined". woran kann das liegen?

Sinn der Funktion ist es, die aktuelle Seite nach allen div elementen zu durchsuchen, diese in die collection zu packen. dann sollen die divs der collection deren id "slide" enthält, versteckt werden. bis auf das div das die var divid hat.

  1. es kommt im firefox die fehlermeldung "function hideshow not defined". woran kann das liegen?

    Das können wir dir nicht sagen. Da die Funktion laut deinen Angaben ja definiert ist. Ein Beispiel wäre hilfreicher.

    Struppi.

  2. Hallo,

    ich lerne gerade js.

    Schön. Dann fange am besten am Anfang an. Lerne z.B. erst mal, wie man lesbaren Code schreibt, mit vernünftigen Einrückungen und so. Deine (übrigens fehlerhafte) Funktion sollte etwa so ntiert werden:

    function hideshow(divid){  
      
        var collection = window.document.getElementsByTagName('div');  
      
        for (var x=0; x<collection.length; x++) {  
      
            if (collection[x].id.match(/slide/gi) AND collection[x].id.length > 0 AND collection[x].id != divid) {  
      
                var divhide = "div#" + collection[x].id;  
                $(divhide).hide();  
      
            } else if (collection[x].id = divid) {  
      
                var divshow = "div#" + divid;  
                $(divshow).slideDown("slow");  
            }  
        }  
    }  
      
    
    

    Wenn du im Eingabefeld deines Postings den Code markierst und den "JavaScript"-Button klickst, wird er nachher so schön bunt wie hier. Auch das erleichtert die Lesbarkeit sehr.

    if (collection[x].id.match(/slide/gi) AND collection[x].id.length > 0 AND collection[x].id != divid) {

    Ein Operator namens "AND" existiert in JS nicht.

    jquery wurde im head eingebunden

    Als JS-Anfänger würde ich nicht direkt mit jquery beginnen.

    es kommt im firefox die fehlermeldung "function hideshow not defined". woran kann das liegen?

    Das ist vermutlich ein scope-Problem.

    Gruß, Don P

    1. Danke Don P.!
      Der Hinweise mit dem "AND" war entscheidend. Hab alles nochmal auf korrekte schreibweise überprüft. Jetzt läuft es wie geschmiert.

      Gruß
      vhspec