01/10/2018, 00:55

Lỗi Javascript nhưng không biết diễn tả lỗi thế nào

‘’’

TODO supply a title
</head>
<body>
    The system will close after <input type="text" id ="countDown" style="width: 24px; border: none; text-align: center;"/> second

      <script>
        
         var second = 10;
        function countDown(){
            seccond = seccond - 1;
            if(second !== 0){
                document.write("count down");
                document.getElementById("countDown").value = seccond;
                setTimeout("countDown()",1000);
            } 
            else {
                document.window.alert("abc");
            }
        }
         countDown();
        
    </script>
</body>
'

Khi mình chạy thì nó không có đếm ngược con số
Nó hiển thị thé này và ra lỗi thế này


cdxf viết 02:58 ngày 01/10/2018
<!DOCTYPE html>
<html>
<body>
    The system will close after <input type="text" id ="countDown" style="width: 24px; border: none; text-align: center;"/> second

      <script>
         var second = 10;
        (function countDown(){
            second = second - 1;
            if(second !== 0){
                document.getElementById("countDown").value = second;
                setTimeout(countDown,1000);
            } 
            else {
                alert("abc");
            }
        })();
    </script>
</body>
</html>
  1. Sai chính tả, second khác seccond.
  2. window.alert == alert (2 cái này tương đương nhau). Không có khái niệm document.window.alert.
  3. document.write là viết lại toàn document, khi dùng document.write thì cái input countdown cũng mất luôn.
  4. Hàm setTimeout nên pass hàm vào chứ không nên pass chuỗi.
    Khi dùng setTimeout("countDown()",1000); thì compiler sẽ chuyển cái chuỗi đó thành dạng như setTimeout(()=>eval("countDown()"),1000); làm code chậm (vì không thể tận dụng đc JIT, cái này bạn học sâu vào js sẽ hiểu.
Bài liên quan
0