Ergebnis 1 bis 4 von 4

Thema: Problem mit Array füllen und an andere Funktion übergeben

  1. #1
    Azubi(ne)
    Registriert seit
    09.04.2007
    Beiträge
    70
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard Problem mit Array füllen und an andere Funktion übergeben

    Hallo Leute

    Ich habe ein Problem mit JavaScript und AJAX mein Array zu füllen und an eine Funktion zu übergeben.

    Ich habe ein HTML-Dokument mit einen Array, welches Dateinamen enthält, die Funktion autoload und buil_menu aufruft.

    Die Funktion autoload ruft für jeden Wert des Array die Funktion getCSV auf und läadt die entsprechende Datei. Die Funktion getCSV ruft die Funktion ausgeben auf, welche mir ein Array mit dem Dateiinhalt erstellen soll. Hierliegt das erste Problem. Wie muss ich den Code dieser Funktion ändern, das ich für alle Datein den Inhalt in dem Array spreichere und nicht nur den Inhalt der zuletzten geladenen Funktion.

    Die Funktion build_menu erzeugt mir ein menü mit Verweisen, wo ich mir den Inhalt der entsprechenden Datei anzeigenlassen möchte. Hier liegt das nächste problem. Wie müss ich das Array mit dem Dateiinhalt übergeben.

    Hab auch bei den einzelen Funktionen noch ein paar Bemerkungen dazu geschrieben.

    Hier kommt jetzt der Code zu den Funktionen:
    HTML-Dokument
    Code:
    <html>
       <head>
          <title>AJAX</title>
          <script type="text/javascript" src="autoload.js"></script>
          <script type="text/javascript" src="getCSV.js"></script>
          <script type="text/javascript" src="ausgeben.js"></script>
          <script type="text/javascript" src="build_menu.js"></script>
          <script type="text/javascript" src="sortieren.js"></script>
          <script type="text/javascript" src="anzeige.js"></script>
          <script type="text/javascript" src="loeschen.js"></script>
       </head>
       <body>
          
          <div id="menu"></div>
    
    
          <script type="text/javascript">
          <!--
            //Array für die Datein
            dateiname = new Array&#40; "lager.csv",
    	  	            "werkstueck.csv",
    		       	    "maschine.csv",
    	   	     	    "fahrzeug.csv",
    	   	       	    "verarbeitung.csv",
          	   	       	    "lagerung.csv",
    	   	       	    "transport.csv",
                                 "prozess.csv"
    		      	  &#41;;
             autoload&#40;&#41;;
    
    	//erzeugen des Menüs
    	build_menu&#40;&#41;;
          --></script>
    
          
          <div id="Ausgabe"></div>
    
    
       </body>
    </html>
    Hier ist der Code der Funktion autoload()
    Code:
    //Array für den Inhalt der Datein
    var dateiinhalt = new Array&#40;&#41;;
    var name = null;
    function autoload&#40;&#41;
    &#123;
    
       //Für jedes Element von "dateiname" wird die Funktion "getCSV" aufgerufen und der Inhalt in ein Array gespeichert
       for &#40;var i = 0; i < dateiname.length; i++&#41;
       &#123;
          // var array_hilfe = dateiname&#91;i&#93;.split&#40;"."&#41;;
          // name = array_hilfe&#91;0&#93;;
          // dateiinhalt&#91;name&#93;&#91;i&#93; = getCSV&#40;dateiname&#91;i&#93;&#41;;
          getCSV&#40;dateiname&#91;i&#93;&#41;;
       &#125;
    &#125;
    Das auskommentierte ist ein Versuch wie ichs mir gedacht habe, funktioniert aber nicht richtig

    Funktion getCSV
    Code:
    var http = null;
    function getCSV&#40;dateiname&#41;
    &#123;
       //Üperprüfung um welchen Browser es sich handelt
       if &#40;window.XMLHttpRequest&#41; &#123;  //Morzilla, Opera ...
          http = new XMLHttpRequest&#40;&#41;;
       &#125;
       else if &#40;window.ActiveXObject&#41; &#123; //Internet Explorer
          http = new ActiveXObject&#40;"Microsoft.XMLHTTP"&#41;;
       &#125;
       if &#40;http != null&#41; &#123;
          //GET = http_Request_Methode
          //dateiname = Pfad der Angeforderten Datei
          //true = JS wird ausgeführt, während auf antwort des Servers gewartet wird &#40;Reguest ist asynchron &#40;= A in AJAX&#41;
          http.open&#40;"GET", dateiname, true&#41;;
          http.onreadystatechange = ausgeben;
          http.send&#40;null&#41;;
       &#125;
       //return dateiinhalt;
    &#125;
    Benötige ich hier eigentlich ein return oder nicht?

    Funktion ausgeben
    Code:
    function ausgeben&#40;&#41; &#123;
       if &#40;http.readyState == 4&#41; &#123;
          var buffer = http.responseText;
          var columnarray = buffer.split&#40;"\n"&#41;;
          for &#40;var x = 0; x < columnarray.length; x++&#41; &#123;
    	dateiinhalt&#91;x&#93;= new Array&#40;&#41;;
             rowarray = columnarray&#91;x&#93;.split&#40;";"&#41;;
             for &#40;var y = 0; y < rowarray.length; y++&#41; &#123;
                dateiinhalt&#91;x&#93;&#91;y&#93;=rowarray&#91;y&#93;;
             &#125;
          &#125;
       &#125;
    &#125;
    Hier wird bei jedem aufruf der Funktion der Inhalt des Array dateiinhalt überschrieben. Wie muss ich das ändern das für jeden Aufruf der Inhalt der entsprechenden Datei in dem Array gespeichert wird?

    Funktion build_menu()
    Code:
    function build_menu&#40;&#41;&#123;
       var htm="<table><tr><td>Anzeige der Datein</td></tr>";
       for&#40;var n=0;n<dateiname.length;n++&#41;&#123;
          name = dateiname&#91;n&#93;;
          htm+="<tr><td><a href=\"javascript&#58;anzeige&#40;'"+dateiinhalt+"'&#41;;\">"+dateiname&#91;n&#93;+"</a></td></tr>";
       &#125;
       htm+="<tr><td>Funktionen zur Verarbeitung</td></tr>";
       htm+="<tr><td><a href=\"javascript&#58;loeschen&#40;&#41;;\">löschen</a></td></tr>";
       htm+="<tr><td><a href=\"javascript&#58;sortieren&#40;&#41;;\">sortieren</a></td></tr>";
       htm+="</table>";
       document.getElementById&#40;"menu"&#41;.innerHTML=htm;
    &#125;
    Mit dieser Funktion erstelle ich mir die Verweise, durch die die Funktion anzeige aufgerufen wird. Wie muss ich die Übergabe des Arrays dateiinhalt ändern. Ich möchte also wenn ich auf den Verweis lagerung.csv (entspricht dateiname[5]) klicke das mir der Inhalt von Lagerung.csv angezeigt wird. Hoff ich hab mich verständlich ausgedrückt.

    Hier ist noch der Code der Funktion anzeige
    Code:
    function anzeige&#40;inhalt&#41; &#123;
          var output = '<table border=1>';
          for &#40;var x = 0; x < inhalt.length; x++&#41; &#123;
             output = output + '<tr>';
             for &#40;var y = 0; y < inhalt&#91;x&#93;.length; y++&#41; &#123;
                output = output + '<td>' + inhalt&#91;x&#93;&#91;y&#93; + '</td>';
             &#125;
             output = output + '</tr>';
          &#125;
          output = output + '</table>';
          document.getElementById&#40;"Ausgabe"&#41;.innerHTML = output;
       &#125;
    &#125;
    Diese Funktion sollte mir jetzt eigentlich den Dateiinhalt der jeweiligen Datei tabellarisch anzeigen. Bekomme aber die Fehlermeldung das length bei der zweiten For-Schleife NULL oder kein Objekt ist. Wo liegt mein Fehler.

    Ist ein sehr langer post. Ich hoffe ihr könnt mir trotzdem weiter helfen. Hab bisher nur gut Erfahrungen mit euch gemacht.

    Tschau und Danke für die Hilfe

    Jessica
    Achtung: Dies ist ein alter Thread im HTML und Webmaster Forum
    Diese Diskussion ist älter als 90 Tage. Die darin enthaltenen Informationen sind möglicherweise nicht mehr aktuell. Erstelle bitte zu deiner Frage ein neues Thema im Forum !!!!!

  2. #2
    König(in)
    Registriert seit
    06.06.2007
    Ort
    Bi
    Beiträge
    1.015
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard

    Also ich bin zwar kein Profi in Ajax , aber versuche mich ma^^


    Dann fangen wir mal von vorne an :

    für die Funktion getCSV brauchst du kein return, da du ja die Elemente nichts zuweist


    Sag mal kann es ein, dass du die Funktio ausgeben gar nicht aufrufst ^^

    wenn das an dieser Stelle geschehen soll :
    nicht http.onreadystatechange = ausgeben; sondern
    http.onreadystatechange = ausgeben();

    dann fehlen da die Klammern "()", wenn du das meinst dann solltest du da aber auch ein return einbauen, sonst wird es ja nicht erkannt ^^

    Wenn du den Array Dateiinhalt relativ gestalten willst, dann gib doch einfach bei der Funktion ausgeben() gleich ein Attribut mit

    Hoffe ich konnte etwas helfen

    LG Konsti
    Sämtlicher Code erhebt keinen Anspruch auf syntaktische Korrektheit geschweige denn Ausführbarkeit und ist für die Implementation außerhalb der Beispiele nicht geeignet.

    Kein Support für kommerzielle Scripts | Kein kostenloser Support via ICQ

  3. #3
    König(in) Avatar von d4f
    Registriert seit
    22.04.2007
    Ort
    Luxemburg
    Beiträge
    1.493
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard

    nein, sein Code ist schon richtig so.
    Die Funktion wird tatsaechlich so aufgerufen.

    Um Arrays aneinanderzu haengen versuchs mit ARRAY1.concat(ARRAY2);

    Ich versteh allerdings deine 2. Frage nicht so richtig :S
    Wir sind alle ein BOFH:

  4. #4
    Azubi(ne)
    Themenstarter

    Registriert seit
    09.04.2007
    Beiträge
    70
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard

    Hallo

    Sorry das ich erst so spät antworte. War wegen Krankheitn ihct ehr möglich.

    Mit der zweiten Frage mein ich das ich bei der Funktion build-menu Verweise erstelle. Der Name der Verweise ist der Dateiname, die aus dem Array Dateinamen entnommen werden. Wenn ich auf den Verweis klicke soll die Funktion anziege aufgerufen werden und der Inhalt der Entsprechenden Datei übergeben werden. Da ja in meinem Array dateiinhalt der Inhalt der Datein nacheinander gespeichert wird(siehe autoload() ) müsste ich beim Aufruf der Funktion anzeige noch einen Indizie mit angeben. Dies funktioniert aber nicht. Krige immer nur den Inhalt der zu letzt in dem Array gespeicherten Datei angezeigt oder eine Fehlermeldung das Length null ist.

    Hoff das es jetzt etwas verständlicher ist und ihr mir helfen könnt.

    Tschau Jessica

Ähnliche Themen

  1. Array mit Daten aus Datenbank füllen
    Von Marco W. im Forum PHP Forum - Apache - CGI - Perl - JavaScript und Co.
    Antworten: 4
    Letzter Beitrag: 18.03.2008, 01:02
  2. [C++] Klassenvariable an andere Klasse übergeben (2D Array)
    Von DarkSyranus im Forum Forum für alle anderen Programmiersprachen
    Antworten: 4
    Letzter Beitrag: 06.12.2007, 18:38
  3. Wert aus JS-Funktion an PHP-Funktion übergeben
    Von Agnes im Forum PHP Forum - Apache - CGI - Perl - JavaScript und Co.
    Antworten: 17
    Letzter Beitrag: 18.05.2007, 22:53
  4. Array an overlib übergeben?
    Von JDF1976 im Forum PHP Forum - Apache - CGI - Perl - JavaScript und Co.
    Antworten: 1
    Letzter Beitrag: 15.02.2007, 11:05
  5. Antworten: 0
    Letzter Beitrag: 04.11.2005, 10:44

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •