I get this error "Cannot read property '0' of null."
I have a table with
somename.html
<table>
<tr>
<td id="td1">text</td>
</tr>
</table>
somename.js
function test(){
var date=new Date();
if(date.getDay()==1 && date.getHours() >=13 && date.getMinutes() >=3 ){ //8-9AM
document.getElementById('td1')[0].style.color = 'blue';
}else if(date.getDay()==1 && date.getHours() == 14 && date.getMinutes() <= 20){
document.getElementById('td1')[0].style.color = 'blue';
}else{
//nothing
}
}
setInterval(test(),1000);
EDIT: new error if i remove [0] "Cannot read property 'style' of null"
getElementById
returns null
if there is no match in the document. (Which then leads to exactly your error message).
This means that either you have a typo in your selector or the html or the js gets executed before your element is included into the dom.
Also, getElementById
returns a single element and not an array (Node List
to be precise), so the correct call would be:
document.getElementById('td1').style.color = 'blue';
Third problem:
setInterval(test(),1000);
// /\
// this will immeditately execute the function and
// hands over the *return value* to setInterval
will not work as intended, it needs to be
setInterval(test,1000);
// /\
// hand over the *function reference* to be executed after 1 second
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With