let imgName;
document.querySelector('input').onchange = (e) => {
  const [file] = e.target.files;
  imgName = "/Users/janhkila/Desktop/" + file.name;
  console.log("image name: ", imgName); [line 11]
  return imgName;
}
console.log("image name: ", imgName); [line 14]
/*
[Log] image name:  – undefined (main.js, line 14)
[Log] image name:  – "/Users/janhkila/Desktop/go-turk-01.png" (main.js, line 11)
*/

Wat zie ik hier over het hoofd?
op regel 2 definieer je wat er moet gebeuren als een input van waarde verandert.

Dat geeft uiteindelijk een naam van een plaatje terug. Waarheen is mij niet duidelijk.

Op regel 8 (of 14) zet jij een variabele naar console.log.
Die is gedefineerd, maar heeft geen waarde. Die had je op regel 1 een waarde moeten geven.

Wel kan deze waarde overschreven worden binnen jouw functie die op regel 2 begint. Maar return heeft daar geen toepassing.

Dus: imgName krijgt een waarde zodra input van waarde verandert (onchange).
Tot die tijd is deze var leeg.

--
ik gebruik normaal
var imgName;

ipv "let". Weet niet wat het verschil is.
Dank voor de reacties, ik ge ermee aan de slag.

Er is nog iets waar ik vreemd van opkijk:

  const img = new Image();
  // img.src = '/Users/janhkila/Desktop/cat-davey.JPG';
  img.src = '/../../../cat-davey.JPG';  // <= Dit werkt!
  // img.src = './cat-davey.JPG'; // <= Dit werkt, dat was bekend
  // img.src = '/Users/janhkila/JavaScript/image-on-canvas/cat-davey.JPG';
  // img.src = '/../../../../cat-davey.JPG'; // <= En dit werkt ook!
  img.onload = () => {
 ...

Kan iemand uitleggen waarom een absoluut path niet werkt, maar een ingewikkeld relatief path wel?
Welk absolute pad krijg je wanneer je het relatieve pad dat wel werkt in realpath() steekt...?

Reageren