Uncaught ReferenceError: X не определен - объявляет объект в файле js, делая ссылку внутри события кнопки html

Я хочу определить объект Javascript внутри js-файла и дать пользователям возможность создавать новые экземпляры его на своем HTML, вызывая src на голове, а затем используя «новый». [возможно, это не лучший подход, но нести со мной] - очень простой материал, не так ли?

Код в файле JS myFile.js:

function myObject(){
   this.myMethod = thisMethod;

   function thisMethod(){
     return 2;
   }
}

Код в HTML:

<head>
  <script type="text/javascript" src="http://myserver/myFile.js">
     var customObject = new myObject();     
  </script>
</head>
<body>
   <input type="button" value="Click Me" onclick="alert(customObject.myMethod());">
</body>

Однако, когда вы нажимаете кнопку, вы получаете ошибку «Uncaught ReferenceError: customObject is not defined».

Я уверен, что это о том, как я объявляю экземпляр, а затем вызываю его. Если я поместил объявление var внутри js-файла, щелчок будет работать:

    function myObject(){
       this.myMethod = thisMethod;

       function thisMethod(){
         return 2;
       }
    }

var customObject = new myObject();

Но это побеждает цель позволить пользователю создать объект и использовать его по своему усмотрению.

Конечно, есть проблема с моей структурой, но все мои исследования не дают мне подсказки. Я думал, что приведение файла JS было таким же, как вставка кода внутри тега скрипта в HEAD и создание объекта там, потому что если я это сделаю, без вызова .js, он будет работать.

У меня много теорий, некоторые из них касаются событий и порядка, где вещи загружаются, но не хотят загромождать этот вопрос.

Итак, вопрос в том, как вы определяете объект в файле JS, а затем позвольте пользователю создать экземпляр и вызвать его методы внутри HTML? (Особенно для таких событий, как onclick)

0
nl ja de

1 ответы

Проблема в том, что вы не можете использовать один и тот же тег, чтобы включить внешний ресурс и определить свой код javascript. Вы должны использовать 2 отдельных тега, иначе любой код, который вы помещаете в теги, будет опущен. Это прекрасно работает:

<script type="text/javascript" src="http://myserver/myFile.js"></script>    
<script type="text/javascript">
    var customObject = new myObject();     
</script>

Надеюсь, поможет,

2
добавлено
Большой! Пожалуйста, отметьте сообщение как ответ, чтобы вы могли помочь другим.
добавлено автор Esteban Aliverti, источник
БЛАГОДАРЯ! Это была проблема. Я переусердствовал и пропустил основы.
добавлено автор noderman, источник
JavaScript Jobs — чат
JavaScript Jobs — чат
8 336 участник(ов)

JavaScript Jobs — чат для поиска работы и людей Правила оформления: https://teletype.in/@telegram-ru/r1WQe5F1m См. также: @mobile_jobs, @devops_jobs, @nodejs_jobs, @react_js, @angular_ru, @js_ru

JavaScript.ru
JavaScript.ru
7 932 участник(ов)

Сообщество сайта JavaScript.ru в Slack.

pro.js
pro.js
4 675 участник(ов)

Про JavaScript и NodeJS Invite: https://t.me/joinchat/Be4rsT5Rsgq30DHutjxXgA Правила: http://telegra.ph/ru-chat-rules-06-19 Вакансии только с ЗП, не чаще раза в неделю.

JavaScript — русскоговорящее сообщество
JavaScript — русскоговорящее сообщество
3 269 участник(ов)

Рекомендуем сразу отключить уведомления Правила: https://rudevs.network/ByaMH6un7 См. также: @js_noobs_ru, @nodejs_ru, @typescript_ru, @react_js, @electron_ru Вакансии и поиск работы: @javascript_jobs

JavaScript Noobs — сообщество новичков
JavaScript Noobs — сообщество новичков
2 484 участник(ов)

Чат для новичков

javascript_ru
javascript_ru
915 участник(ов)

Сообщество любителей самого популярного языка программирования в мире. Чат основан в 2009 году. Логи: https://goo.gl/9EOeM7 Поддержка бота: @chat_linker (ссылка на репу внутри) Вам будут интересны @frontend_ru и @css_ru

jsChat
jsChat
603 участник(ов)

Чат посвященный программированию на языке javaScript Перед отправкой ссылки на Ваш контент посоветуйтесь с админом Все ссылки удаляются ботом автоматически

JavaScript for Zombies Chat
JavaScript for Zombies Chat
492 участник(ов)

Чат про JavaScript для настоящих zombie! Вход строго по приглашениям! Ссылка для строгих приглашений: https://t.me/joinchat/AAMBHz3Uyr0tuZ7VaB029g

All That JS
All That JS
417 участник(ов)

JS на русском