Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 05.07.2021, 12:57
Аспирант
Отправить личное сообщение для prototip Посмотреть профиль Найти все сообщения от prototip
 
Регистрация: 15.05.2021
Сообщений: 35

как исправить ошибку?
Ребята, подскажите в браузере выдает ошибку, почему и как исправить? Uncaught ReferenceError: show is not defined
at HTMLInputElement.onchange (index.html?_ijt=1e2q4b7rp7qa280js6hpf45j5c&_ij_re load:17)
на эту строку:
<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>file</title>
</head>
<body>
<div class="file-read">
    <div class="file-input">
        <label class="custom-file-upload">
            <input type="file" id="file" onchange="show(this)" accept=".txt, .pdf, .epub, .fb2">
            Upload a file
        </label>
    </div>

    <a href="">Reset</a>

</div>

<div id="table-div">
    <table id="out"></table>
</div>
</body>
</html>


import * as _ from 'lodash';

function show(input) {
  const file = input.files[0];

  const reader = new FileReader();
  reader.readAsText(file, 'UTF-8');
  reader.onload = () => {
    const res = _.words(reader.result, /[а-яА-ЯёЁa-zA-Z]{4,}/gim);
    const result = _.flow([
      _.countBy,
      _.toPairs,
      _.partial(_.orderBy, _, 1, 'desc'),
      _.partial(_.take, _, 10),
    ]);

    const txt = result(res).map(([word, num]) => `<tr><td>${word}<td>${num}`).join('');
    const out = document.getElementById('out');
    out.insertAdjacentHTML('beforeend', txt);
  };
}

Последний раз редактировалось prototip, 06.07.2021 в 17:30.
Ответить с цитированием
  #2 (permalink)  
Старый 05.07.2021, 13:34
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,590

Смотря на require можно предположить, что вы используете модули. Модули на то и модули, что они изолированы, и функция show существует только внутри конкретного модуля. Чтобы использовать функцию show где-то ещё, надо во-первых: её экспортировать из этого модули, во-вторых: импортировать в месте использования.

Ну или таки разместить её глобально:
window.show = function show ...
__________________
29375, 35
Ответить с цитированием
  #3 (permalink)  
Старый 06.07.2021, 17:29
Аспирант
Отправить личное сообщение для prototip Посмотреть профиль Найти все сообщения от prototip
 
Регистрация: 15.05.2021
Сообщений: 35

Aetae,
Цитата:
Чтобы использовать функцию show где-то ещё, надо во-первых: её экспортировать из этого модули, во-вторых: импортировать в месте использования.
у меня только 2 файла html и js. Если в html создать тег script и перенести код из файла js, то функция определяется и все ок, но если этот скрипт вынести во внешний файл, то функция перестает определяться. Если сделать так как вы говорите, экспортировать эту функцию, а импортировать ее куда необходимо? в html?
Ответить с цитированием
  #4 (permalink)  
Старый 06.07.2021, 19:44
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,590

Всё равно после импорта её надо будет задать глобально для использования в onclick.

Правильный подход - не использовать onclick в html, а давать элементу класс или id, и уж по нему назначать обработчики в коде через addEventListener.
__________________
29375, 35
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как исправить ошибку? prototip Общие вопросы Javascript 8 30.06.2021 10:47
Как исправить ошибку( Cannot read property 'pageX' of undefined) xaker Общие вопросы Javascript 3 15.07.2018 22:52
Управление скроллом "а-ля тач" HonesT Элементы интерфейса 2 27.08.2013 14:25
Необходимо найти и исправить ошибку в CSS/Javascript javascript_pupil Работа 1 02.05.2011 15:41
Как вывести ошибку в javascript? MCTrane Общие вопросы Javascript 13 05.05.2010 08:36