Как победить ошибку Uncaught ReferenceError: name is not defined?

Здравствуйте!

Подскажите, пожалуйста, как побороть ошибку вида "Uncaught ReferenceError: employee_or_subdivision is not defined".

Есть вот такой файл JavaScript (employees.self-ca514fd36f817a8007596c8779e8a7266cea57082fa2d16368372ebc46d12245.js):
(function() {
  var employee_or_subdivision;

  employee_or_subdivision = function(a) {
    var label;
    label = a.value;
    if (label === '1') {
      $('#position_name').style.display = 'block';
    } else {
      $('#position_name').style.display = 'none';
    }
  };

}).call(this);

Это сгенерированный в Ruby On Rails код на основе следующего кода CoffeeScript:
employee_or_subdivision = (a) ->
  label = a.value
  if label == '1'
    $('#position_name').style.display = 'block'
  else
    $('#position_name').style.display = 'none'
  return

А этот код я сгенерировал здесь.

Смысл js-кода - убирать / показывать определённый div при выборе пользователем radiobox'а.

К сожалению, js-код "не цепляется": браузер пишет ошибку "Uncaught ReferenceError: employee_or_subdivision is not defined". Как я понял из прочтения форумов, эта ошибка говорит о том, что такой объект не создан. Но он ведь создан в javascript-файле! И этот файл в коде страницы указан ниже объявления jquery-файла.

Подскажите, пожалуйста, что я не так делаю?

Код странички в браузере:
<html>
<head>
  <title>Добавление нового сотрудника / подразделения | Web-СКК</title>
  <link rel="stylesheet" media="all" href="/assets/about.self-e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855.css?body=1" data-turbolinks-track="true" />
<link rel="stylesheet" media="all" href="/assets/bootstrap.self-3c02d8f9ff6a2157dee995e8be538ee8f863a97c3b6df198084e1fe81de4d55d.css?body=1" data-turbolinks-track="true" />
<link rel="stylesheet" media="all" href="/assets/employees.self-e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855.css?body=1" data-turbolinks-track="true" />
<link rel="stylesheet" media="all" href="/assets/equipments.self-e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855.css?body=1" data-turbolinks-track="true" />
<link rel="stylesheet" media="all" href="/assets/factors.self-e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855.css?body=1" data-turbolinks-track="true" />
<link rel="stylesheet" media="all" href="/assets/influences.self-e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855.css?body=1" data-turbolinks-track="true" />
<link rel="stylesheet" media="all" href="/assets/organizations.self-e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855.css?body=1" data-turbolinks-track="true" />
<link rel="stylesheet" media="all" href="/assets/persons.self-e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855.css?body=1" data-turbolinks-track="true" />
<link rel="stylesheet" media="all" href="/assets/application.self-e80e8f2318043e8af94dddc2adad5a4f09739a8ebb323b3ab31cd71d45fd9113.css?body=1" data-turbolinks-track="true" />
  <script src="/assets/jquery.self-660adc51e0224b731d29f575a6f1ec167ba08ad06ed5deca4f1e8654c135bf4c.js?body=1" data-turbolinks-track="true"></script>
<script src="/assets/jquery_ujs.self-e87806d0cf4489aeb1bb7288016024e8de67fd18db693fe026fe3907581e53cd.js?body=1" data-turbolinks-track="true"></script>
<script src="/assets/turbolinks.self-c5acd7a204f5f25ce7a1d8a0e4d92e28d34c9e2df2c7371cd7af88e147e4ad82.js?body=1" data-turbolinks-track="true"></script>
<script src="/assets/about.self-877aef30ae1b040ab8a3aba4e3e309a11d7f2612f44dde450b5c157aa5f95c05.js?body=1" data-turbolinks-track="true"></script>
<script src="/assets/employees.self-ca514fd36f817a8007596c8779e8a7266cea57082fa2d16368372ebc46d12245.js?body=1" data-turbolinks-track="true"></script>
<script src="/assets/equipments.self-877aef30ae1b040ab8a3aba4e3e309a11d7f2612f44dde450b5c157aa5f95c05.js?body=1" data-turbolinks-track="true"></script>
<script src="/assets/factors.self-877aef30ae1b040ab8a3aba4e3e309a11d7f2612f44dde450b5c157aa5f95c05.js?body=1" data-turbolinks-track="true"></script>
<script src="/assets/influences.self-877aef30ae1b040ab8a3aba4e3e309a11d7f2612f44dde450b5c157aa5f95c05.js?body=1" data-turbolinks-track="true"></script>
<script src="/assets/organizations.self-877aef30ae1b040ab8a3aba4e3e309a11d7f2612f44dde450b5c157aa5f95c05.js?body=1" data-turbolinks-track="true"></script>
<script src="/assets/persons.self-877aef30ae1b040ab8a3aba4e3e309a11d7f2612f44dde450b5c157aa5f95c05.js?body=1" data-turbolinks-track="true"></script>
<script src="/assets/application.self-3b8dabdc891efe46b9a144b400ad69e37d7e5876bdc39dee783419a69d7ca819.js?body=1" data-turbolinks-track="true"></script>
  <meta name="csrf-param" content="authenticity_token" />
<meta name="csrf-token" content="ZOdPn99Oe4k/as9DJggF5wB2NUJK/BmAwP/prHzOL+U75Vi8PoCPyv8B1ovJagbNXoTWbnphbq+tlG0PVSruFQ==" />
</head>
<body>

  <div class="navbar navbar-default navbar-static-top">
      <div class="container">
        <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-responsive-collapse">
          <span class="icon-bar"></span>
          <span class="icon-bar"></span>
          <span class="icon-bar"></span>
        </button>
        <a class="navbar-brand" href="/">Web-СКК</a>
        <div class="navbar-collapse collapse navbar-responsive-collapse">
          <ul class="nav navbar-nav">
            <li><a href="/organizations">Организации</a></li>
            <li><a href="/about/service">О сервисе</a></li>
              <li>
                  <a href="/persons/profile">Супер администратор</a>
              </li>
              <li><a rel="nofollow" data-method="delete" href="/users/sign_out">Выход из системы</a> </li>
 <!-- /if user_signed_in -->
          </ul>
        </div>
      </div>
    </div>
    
    
    
    <div class="container">
      <div class="row">
        <div class="col-lg-12">
          
          
<div class="page-header">
  <h1>Добавление нового сотрудника / подразделения</h1>
</div>
<form class="form-horizontal employee" id="new_employee" action="/organizations/19/employees" accept-charset="UTF-8" method="post"><input name="utf8" type="hidden" value="&#x2713;" /><input type="hidden" name="authenticity_token" value="ddKSeD9PyF7pRz+IBkIc/0owDeyPeu4osa5H6231nlMq0IVb3oE8HSksJkDpIB/VFMLuwL/nmQfcxcNIRBFfow==" />

  <div class="form-group">
    <label class="control-label col-lg-2" style="padding-top:0px;" for="employee_is_user">Сотрудник или подразделение</label>
    <div class="col-lg-10">
      <input onChange="employee_or_subdivision(this)" type="radio" value="1" checked="checked" name="employee[is_user]" id="employee_is_user_1" />
      <label for="employee_is_user_1">Сотрудник</label>

      <input onChange="employee_or_subdivision(this)" type="radio" value="0" name="employee[is_user]" id="employee_is_user_0" />
      <label for="employee_is_user_0">Подразделение</label>
    </div>
    
  </div>
  
  <div class="form-group">
    <label class="control-label col-lg-2" style="padding-top:0px;" for="employee_title">Title</label>
    <div class="col-lg-10">
      <input class="form-control" type="text" name="employee[title]" id="employee_title" />
    </div>
    
  </div>
  
  <div class="form-group" id="position_name">
    <label class="control-label col-lg-2" style="padding-top:0px;" for="employee_position_name">Должность сотрудника</label>
    <div class="col-lg-10">
      <input class="form-control" type="text" name="employee[position_name]" id="employee_position_name" />
    </div>
    
  </div>

  <div class="form-group">
    <label class="control-label col-lg-2" style="padding-top:0px;" for="employee_parent_id">Родительское подразделение</label>
    <div class="col-lg-10">
      <select class="form-control" name="employee[parent_id]" id="employee_parent_id"><option value=""></option>
<option value="1">Цех по производству печенек</option>
<option value="3">Цех по фасовке печенек</option>
<option value="4">Склад</option></select>
    </div>
    
  </div>
  
  <div class="form-group">
    <div class="col-lg-offset-2 col-lg-10">
        <input type="submit" name="commit" value="Добавить" class="btn btn-primary" />
      <a class="btn btn-default" href="/organizations/19/employees">Отмена</a>
    </div>
  </div>

</form>

        </div>
      </div>   <!-- /row -->

      <footer>
        <p>&copy; Web-СКК, 2016</p>
      </footer>

    </div> <!-- /container -->

</body>
</html>
  • Вопрос задан
  • 35758 просмотров
Решения вопроса 1
@vshvydky
https://learn.javascript.ru/closures-module
У вас функция вне зоны видимости находится, на сколько я понимаю.
По моей ссылке ищите пример с "window._ = lodash;" Вам функцию по идее надо экспортнуть.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы