Ich versuche Crop-Resize n ein Bild auf Client-Browser mit JS anzuzeigen. Ich bin dazu in der Lage, außer dass meine Textschleife falsch ist. Sie können auf dem Bild unten sehen, dass es die letzte Iteration wiederholt. Meine Bildschleife funktioniert jedoch gut. Hint
- Der erste Dateiname sollte black.jpg
sein.Javascript for-loop wiederholende letzte Iteration
Am nicht in der Lage, das Problem zu lösen, nachdem mehrere Stunden versucht zu haben. Unten ist eine getrimmte Version des Codes angegeben. Bei Bedarf ist hier das complete version des Skripts. Bitte helfen Sie, ich lerne immer noch.
HTML
<input type="file" id="input" onchange="prevCrop()" multiple>
<ul id="listWrapper"></ul>
JAVASCRIPT
function prevCrop() {
var files = document.querySelector('input[type=file]').files;
for (var i = 0; i < files.length; i++) {
var file = files[i];
var fileSize = Math.floor(file.size/1024);
var info = file.name + " " + fileSize + " KB : iteration number - " + i;
var reader = new FileReader();
if (reader != null) {
reader.onload = GetThumbnail;
reader.readAsDataURL(file);
}
}
function GetThumbnail(e) {
var canvas = document.createElement("canvas");
var newImage = new Image();
newImage.src = e.target.result;
newImage.onload = cropResize;
function cropResize() {
canvas.width = 70;
canvas.height = 70;
### more codes here that handles image ###
var dataURL = canvas.toDataURL("image/jpg");
var thumbList = document.createElement('div');
thumbList.setAttribute('class', 'tlistClass');
var nImg = document.createElement('img');
nImg.src = dataURL;
var infoSpan = document.createElement('span');
infoSpan.innerHTML = info;
var handle = document.getElementById("listWrapper").appendChild(thumbList);
handle.appendChild(nImg);
handle.appendChild(infoSpan);
}
}
}
Danke, das löst es. Ich habe so [viel zu lernen] (http://stackoverflow.com/questions/750486/javascript-closure-inside-loops-simple-practical-example/19323214#19323214) – gurung
Gern geschehen. – trincot