Search code examples
javascripthtmlcountdown

Why this JS countdown doesn't work?


<script type="text/javascript">
function countdown(seconds, element)
{
    var count = seconds;
    var counter= setInterval(timer, 1000);

    function timer()
    {
        count--;
        if (count <= 0)
        {
            clearInterval(counter);
            return;
        }   
        element.innerHTML = "Seconds remaining: " + count;
    }
}
</script>


<h1 onload="countdown(100, this)"></h1>

So why innerHTML of the calling tag doensn't change? I saw other codes, but i didn't see any error here. I'm newbie on JS coding.


Solution

  • onload function can be used on <body> tag, it doesn't seem to work on other tags. try adding it on <body>

    function countdown(seconds, element)
    {
      var count = seconds;
      var counter= setInterval(timer, 1000);
      function timer()
       {
         count--;
         if (count <= 0)
         {
          clearInterval(counter);
          return;
         } 
         element.innerHTML = "Seconds remaining: " + count;
         //console.log(count);
       }
    }
    
    h1List=document.getElementsByTagName("h1");
      for(i=0;i<h1List.length;i++){
         countdown(100-i*3, h1List[i]);
      }
    //countdown(100, document.getElementsByTagName("h1")[0]);
    <h1></h1>
    <h1></h1>
    <h1></h1>
    <h1></h1>
    <!--<body onload="countdown(100,document.getElementsByTagName(`h1`)[0])">-->