Я получаю ошибку Cannot set property 'className' of null
при попытке установить имя класса в JS. Мой JS выглядит так:
setInterval(function(){
$.get('/price',function(data) {
document.title = '($${data.price}) The Price';
document.getElementById("p4").innerHTML = '$${data.change}';
document.getElementById("p4").className = "increase";
document.getElementById("p5").className = "triangle-down";
});
}, 30000);
Строка в HTML:
<h1 class="decrease" id="p4">$5<i class="triangle-up" id="p5"></i></h1>
Я всегда получаю ту же ошибку. Однако, если я прокомментирую строку ниже, она работает:
document.getElementById("p4").innerHTML = '$${data.change}';
Что я здесь делаю неправильно?
Вы меняете внутри своего тега h1:
document.getElementById("p4").innerHTML = '$${data.change}';
что является результатом:
'$${data.change}'
убедитесь, что указанная выше переменная перенастраивает следующий html: (edit: я означает следующий формат)
<h1 class="decrease" id="p4">$5<i class="triangle-up" id="p5"></i></h1>
Объяснение внутри кода
setInterval(function(){
$.get('/price',function(data) {
document.title = '($${data.price}) The Price';
// Step by step:
// You change innerHTML of id=p4, but your new html might not
// contents the <i class="triangle-up" id="p5"></i>
document.getElementById("p4").innerHTML = '$${data.change}';
// you changing class of p4 this is ok
document.getElementById("p4").className = "increase"
// you are trying to change class of p5, but two lines above you
// replaced it by $${data.change} that probably don't contains
// div with id=p5 and it looks like there is no more div id=p5 on the page
// that also explains why everything is ok if you comment this line
document.getElementById("p5").className = "triangle-down"
});
}, 30000);
Возможно, у вас есть недостающие полуколоны. в конце двух назначений className?
Можно попробовать:
document.getElementById("p4").classList.remove('decrease');
document.getElementById("p4").classList.add('increase');
document.getElementById("p5").classList.remove('triangle-up');
document.getElementById("p5").classList.add('triangle-down');
document.getElementById("p4").className = "increase"
вместо$("#p4").addClass("increase")
?