DIVINEXJ
@DIVINEXJ
Ремонтирую материнские платы iPhone iPad

Как решить проблему с JS: Uncaught ReferenceError?

Всем привет.
Сам я ещё не изучал js, а проблема требует немедленного решения, помогите кто чем может плез.

Короче говоря, есть два js скрипта, один maps.js - отвечает за карту, второй script.js в основном за обратную связь, содержимое скриптов приложу ниже.
Проблема вот в чём, вот эти ошибки сыпятся в консоли браузера как-то рандомно, например скрипт может сработать не с первого раза а только после перезагрузки страницы, или сработает сразу но после трех-четырех перезагрузок на пятую снова могут показаться эти ошибки :
script.js:1 Uncaught ReferenceError: $ is not defined
    at script.js:1
(anonymous) @ script.js:1
maps.js:1 Uncaught ReferenceError: $ is not defined
    at maps.js:1
(anonymous) @ maps.js:1
index.js:21 Uncaught ReferenceError: $ is not defined
    at index.js:21


То есть абсолютный рандом. По поводу Index.js, у меня даже такого файла нет, я хз зачем он мне на него указывает.

Порядок подключения скриптов:
<script async src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
    <script async src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.3/umd/popper.min.js"></script>
    <script async src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta.2/js/bootstrap.min.js"></script>
    <script async src="js/wow.min.js"></script>
    <script async src="js/script.js"></script>
    <script async src="js/maps.js"></script>


Вот эти два файла:

maps.js
var spinner = $('.ymap-container').children('.loader');
	var check_if_load = false;
	var myMapTemp, myPlacemarkTemp;
	 
	function init () {
	  var myMapTemp = new ymaps.Map("map-yandex", {
	    center: [54.716461, 55.953373],
	    zoom: 14,
	    controls: ['zoomControl', 'fullscreenControl']
	  });
	  var myPlacemarkTemp = new ymaps.GeoObject({
	    geometry: {
	        type: "Point",
	        coordinates: [54.716461, 55.953373]
	    }
	  });
	  myMapTemp.geoObjects.add(myPlacemarkTemp);
	 
	  var layer = myMapTemp.layers.get(0).get(0);
	 
	  waitForTilesLoad(layer).then(function() {
	    spinner.removeClass('is-active');
	  });
	}
	 
	function waitForTilesLoad(layer) {
	  return new ymaps.vow.Promise(function (resolve, reject) {
	    var tc = getTileContainer(layer), readyAll = true;
	    tc.tiles.each(function (tile, number) {
	      if (!tile.isReady()) {
	        readyAll = false;
	      }
	    });
	    if (readyAll) {
	      resolve();
	    } else {
	      tc.events.once("ready", function() {
	        resolve();
	      });
	    }
	  });
	}
	 
	function getTileContainer(layer) {
	  for (var k in layer) {
	    if (layer.hasOwnProperty(k)) {
	      if (
	        layer[k] instanceof ymaps.layer.tileContainer.CanvasContainer
	        || layer[k] instanceof ymaps.layer.tileContainer.DomContainer
	      ) {
	        return layer[k];
	      }
	    }
	  }
	  return null;
	}
	 
	function loadScript(url, callback){
	  var script = document.createElement("script");
	 
	  if (script.readyState){  // IE
	    script.onreadystatechange = function(){
	      if (script.readyState == "loaded" ||
	              script.readyState == "complete"){
	        script.onreadystatechange = null;
	        callback();
	      }
	    };
	  } else {  // Другие браузеры
	    script.onload = function(){
	      callback();
	    };
	  }
	 
	  script.src = url;
	  document.getElementsByTagName("head")[0].appendChild(script);
	}
	 
	var ymap = function() {
	  $('.ymap-container').mouseenter(function(){
	      if (!check_if_load) {
	 
	        check_if_load = true; 
	 
	        spinner.addClass('is-active');
	 
	        loadScript("https://api-maps.yandex.ru/2.1/?lang=ru_RU&amp;loadByRequire=1", function(){
	           ymaps.load(init);
	        });                
	      }
	    }
	  );  
	}
	 
	$(function() {
	 
	  ymap();
	 
	});


script.js
$(function() {
	$('#square').keyup(function(){
		var square = $(this).val();
		$('#price').val(square*1100)
	});
	$('#price').keyup(function(){
		var price = $(this).val();
		$('#square').val((price/1100).toFixed(2))
	});

	$('.ask-blocks .item h4').click(function(){
		var thisH4 = $(this),
			thisSpan = $('div', $(this).parent()),
			outherH4 = $('.ask-blocks .item h4').not(thisH4),
			outherSpan = $('.ask-blocks .item div').not(thisSpan);
		outherH4.removeClass('active');
		outherSpan.hide().removeClass('active');
		thisH4.toggleClass('active');
		thisSpan.fadeToggle().toggleClass('active');
	});
    $("input.tel").click(function(){
    	$(this).val('');
    });
	$(window).scroll(function() {
		var pos = 86;
		if( ($(window).width() <= 1199) || ($(window).width() >= 768) ) {
			pos = 150;
		}
		if( ($(window).width() <= 767) || ($(window).width() >= 576) ) {
			pos = 150;
		}
		if($(window).width() <= 575) {
			pos = 290;
		}

		if($(this).scrollTop() >= pos) {
			$('nav').addClass('stickytop');
		}
		else{
			$('nav').removeClass('stickytop');
		}
	});
    $('.smoothScroll').click(function(event) {
        event.preventDefault();
        var href=$(this).attr('href');
        var target=$(href);
        var top=target.offset().top;
        $('html,body').animate({
          scrollTop: top
        }, 1000);
    });

	$('.modal').on('hidden.bs.modal', function (e) {
	  $('input:not(.type)', $(this)).val('');
	});
	$('form').submit(function(e){
	    e.preventDefault();
		var form_data = {
			'name':$(".name", $(this)).val(),
			'tel':$(".tel", $(this)).val(),
			'price':$("#price", $(this)).val(),
			'square':$("#square", $(this)).val(),
			'type':$(".type", $(this)).val()
		};
		$.ajax({
		  type: "POST",
		  url: "/php/mail.php",
		  data: form_data,
		  success: function(){
		    $('.modal').modal('hide');
		    setTimeout(function() {
		    	$('.success').fadeToggle();
		    }, 1000);
		    setTimeout(function() {
		    	$('.success').fadeToggle();
		    }, 2500);
		  },
		  error: function() {
		  	alert("Произошла какая то ошибка!");
		  }
		}); 
	});
	new WOW().init();
});
  • Вопрос задан
  • 19786 просмотров
Решения вопроса 1
dollar
@dollar
Делай добро и бросай его в воду.
Нужно подключить библиотеку jQuery до этих двух скриптов.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы