Здравствуйте!
Есть скрипт, который работает с элементами на одной странице сайта, но подключается на всех. На странице, где скрипт работает все нормально, а на остальных страницах сайта выдается ошибка
Uncaught TypeError: Cannot read property 'addEventListener' of null
at HTMLDocument.<anonymous> (pricecalcen.js?:20)
at i (jquery.js?:2)
at Object.fireWith [as resolveWith] (jquery.js:2)
at Function.ready (jquery.js:2)
at HTMLDocument.K (jquery.js:2)
Код скрипта
jQuery(function($){
var month = {
one: {
quantity:1,
price: 5,
rate: 1
},
six: {
quantity:6,
price: 2,
rate: 0.5
},
twelve: {
quantity:12,
price: 1,
rate: 0.2
}
};
var number = document.getElementById("NumberOfRooms");
number.addEventListener('click', function(){
this.value = "";
});
number.onkeydown = function(e) {
if((e.which >=48 && e.which <=57)
|| (e.which >=96 && e.which <=105)
|| e.which==8
|| (e.which >=37 && e.which <=40)
|| e.which==46)
{
return true;
}
else {
return false;
}
};
number.addEventListener('keyup', function(){
NumberOfRooms = $('#NumberOfRooms').val();
for (var key in month) {
var summSpan = 'summ' + month[key].quantity;
var priceSpan = 'price' + month[key].quantity;
$('span[id='+priceSpan+']').text(month[key].price.toFixed(2).replace(/(\d)(?=(\d\d\d)+([^\d]|$))/g, '$1 '));
$('span[id='+summSpan+']').text((month[key].price * month[key].quantity).toFixed(2).replace(/(\d)(?=(\d\d\d)+([^\d]|$))/g, '$1 '));
}
});
})
Понятно, что скрипт не видит number, потому что этого элемента просто нет на всех остальных страницах. Но я не могу понять, почему он вообще начинает работать с этим элементом и доводит до ошибки. Мне казалось, что .addEventListener просто регистрирует обработчик, который запускается только если элемент найден и по нему совершено указанное в обработчике действие. Где может быть ошибка?