Javascript Array als return Wert von Funktion ?

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
ren22

Javascript Array als return Wert von Funktion ?

Beitrag von ren22 » 30.06.2019 10:30:01

Hallo,

eins vorweg: Javascript ist für mich noch totales Neuland, ich probiere schon seit Stunden eine einfache html Seite mit ein wenig Javascript zu erstellen.
Der eigentliche Javascript Code in der html Seite dient lediglich dazu, 1) eine TextDatei mit 100 Dateinamen einzulesen als Array 2) von dem Array 9 zufällige Dateinamen, keine doppelten, auszuwählen und dann 3) mit "document.write" die 9 zufälligen Dateinamen als links (href) in der html Seite zu generieren. Hat dann immer den Vorteil wenn man die Seite neulädt immer wieder 9 neue Zufällige Bilder links erzeugt werden, so jedenfalls ist mein Wunschgedanke. Achso, dass ganze Offline, direkt aus einem Ordner heraus, alle dateien liegen direkt in dem Ordner, soll das ganze funktionieren. Leider funktioniert das ganze nicht so. :-(

Nun dachte ich kann mir das Array "myArray" als return Wert aus der Funktion readTextFile() ausgeben lassen aber leider bekomme ich unter Chromium immer nur "undefined"
Was mache ich den falsch ?

hier der "aktuelle" Javascript Teil aus der html Seite:

Code: Alles auswählen

<script>
function readTextFile(filePath){
    var myArray = new Array(4);
    var rawFile = new XMLHttpRequest();
    rawFile.open("GET", filePath , true);
    rawFile.send(null);

    rawFile.onreadystatechange = function (){
        if(rawFile.readyState === 4){
            if(rawFile.status === 200 || rawFile.status == 0){
                var allText = rawFile.responseText;
                //console.log(allText);
                var lines = allText.split(/\r\n|\r|\n/g);
                for (var line = 0; line < lines.length; line++){
                    //console.log('line: ' + lines);
                    myArray.push(lines[line]);
                }
                //console.log('return1');
                return myArray;
            }
        }
    }
}
//readTextFile('dv_screenshots.txt')

function showArray(theArray){
        var quote = "";
        for (var i = 0; i < theArray.length; i++){
            quote += theArray[i] + " ";
        }
        return quote;
}
</script>
<script>
var x = readTextFile('dv_screenshots.txt');
document.write(showArray(x));
</script>
und hier ist mein erstes Original Script, was ich nach 10Stunden herum probieren nun irgendwie aufgegeben habe.
NoPaste-Eintrag40781

und hier ein verkürzter Auszug aus der TextDatei die, die Name enthält

Code: Alles auswählen

dv_screenshot_00:00:22.png
dv_screenshot_00:00:56.png
dv_screenshot_00:02:16.png
dv_screenshot_00:03:06.png
dv_screenshot_00:03:46.png
dv_screenshot_00:04:01.png
dv_screenshot_00:05:16.png
dv_screenshot_00:05:51.png
dv_screenshot_00:07:09.png
dv_screenshot_00:08:46.png
dv_screenshot_00:10:12.png
dv_screenshot_00:11:42.png
... usw.

thoerb
Beiträge: 1677
Registriert: 01.08.2012 15:34:53
Lizenz eigener Beiträge: MIT Lizenz

Re: Javascript Array als return Wert von Funktion ?

Beitrag von thoerb » 30.06.2019 18:46:05

ren22 hat geschrieben: ↑ zum Beitrag ↑
30.06.2019 10:30:01
Nun dachte ich kann mir das Array "myArray" als return Wert aus der Funktion readTextFile() ausgeben lassen aber leider bekomme ich unter Chromium immer nur "undefined"
Was mache ich den falsch ?
Ich habe mich jetzt nicht näher mit dem Code befasst, aber readTextFile() gibt nichts zurück, das return bezieht sich auf die anonyme Funktion:

Code: Alles auswählen

rawFile.onreadystatechange = function (){...
Hinter der anonymen Funktion fehlt auch ein Semikolon.

Antworten