2017-04-02 2 views
-2

Ich erhalte die folgende Fehlermeldung, wenn ich meine Refresh-Button klicken:"Can not Eigenschaft 'Länge' undefiniert lesen", wenn Aufruf der Funktion

caught TypeError: Cannot read property 'length' of undefined 
at getRandomImage (index.html:85) 
at HTMLInputElement.onclick (index.html:11) 

dieses Snippet Siehe:

var myArray = new Array(); 
 

 
getRandomImage(myArray, ""); 
 

 
function getRandomImage(imgAr, path) { 
 
    path = path || 'C:/Users/Owen/Desktop/1-800MemeLine-master/memes/'; // default path here 
 
    var num = Math.floor(Math.random() * imgAr.length); 
 
    var img = imgAr[ num ]; 
 
    var imgStr = '<img src="' + path + img + '" alt = "">'; 
 
    document.write(imgStr); document.close(); 
 
}
<form> 
 
    <INPUT TYPE="button" onClick="getRandomImage()" VALUE="More MEME plz"> 
 
    </INPUT> 
 
</form>

Es funktioniert gut mit dem Knopf, der die Seite erneuert, aber die meisten Leute auf meiner Web site haben schlechtes Internet, das eine lange Zeit dauert, um die Seite neu zu laden, also nur ladend Das Bild und nicht der Hintergrund und Text und unnötige Dinge.

Link zu GitHub REPO: https://github.com/odude102/1-800MemeLine/blob/master/index.html

+1

Im 'onClick', die Sie anrufen' getRandomImage() 'ohne Argumente, also 'imgAr' in Ihrer Funktion ist undefiniert, und dann erhalten Sie einen TypeError beim Versuch, die Länge von undefined zu lesen. –

+0

Könnten Sie bitte einige Demo-Code zur Verfügung stellen o nicht verstehen, was Sie sagen, wie würde ich definieren imgAr –

+0

Willst du sagen, ich sollte getRandomImage (imgAr) –

Antwort

0

Dies ist nicht die beste Lösung, aber es behebt das Problem:

var myArray = new Array(); 
var path = 'C:/Users/Owen/Desktop/1-800MemeLine-master/memes/'; 
getRandomImage(); 

function getRandomImage() { 
    var num = Math.floor(Math.random() * myArray.length); 
    var img = myArray[ num ]; 
    var imgStr = '<img src="' + path + img + '" alt = "">'; 
    document.write(imgStr); 
    document.close(); 
} 
+0

Es entfernt den Hintergrund und Bildwechsel-Taste gibt es eine Möglichkeit, es in einen iframe oder etwas zu setzen –

Verwandte Themen