Всем привет.
Сам я ещё не изучал 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&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();
});