-2

Условие: Если по ссылке считывается из файла нечетное количество строк отобразить рисунок иначе список
Помогите разобраться в коде:

function readFile(object) {
  var file = object.files[0]
  var reader = new FileReader()
  reader.onload = function() {
    document.getElementById('out').innerHTML = reader.result
  }
  reader.readAsText(file)
  const out = document.getElementById('out'),
     linesCnt = reader.result.split(/\r?\n/).length;
  out.innerHTML = `Строк: $ { linesCnt } <br> $ { linesCnt % 2 ?
        '<img src="https://picsum.photos/400/250/">' :
         '<ul><li>Lorem</li><li>ipsum</li></ul>'
    } `;
}
<input type="file" id="file">
<button onclick="readFile(document.getElementById('file'))">Read!</button>
<div id="out"></div>
Grundy
  • 81,538

1 Answers1

1

Код вполне рабочий, однако, так как операция загрузки асинхронная, нужно поместить работу с загруженным текстом внутрь обработчика onload

function readFile(object) {
  var file = object.files[0];
  var reader = new FileReader();
  reader.onload = function() {
    linesCnt = reader.result.split(/\r?\n/).length;
    document.getElementById('out').innerHTML = `Строк: ${ linesCnt } <br> ${ linesCnt % 2 ?
        '<img src="https://picsum.photos/400/250/">' :
         '<ul><li>Lorem</li><li>ipsum</li></ul>'
    } `;
  }
  reader.readAsText(file)
}
<input type="file" id="file">
<button onclick="readFile(document.getElementById('file'))">Read!</button>
<div id="out"></div>
Grundy
  • 81,538