Hãy đăng ký thành viên để có thể dễ dàng trao đổi, giao lưu và chia sẻ về kiến thức đồ họa.
  1. Hãy đăng ký subscribe kênh Youtube mới của Việt Designer tại địa chỉ: Youtube.com/VietDesignerChannel để theo dõi các video về thiết kế đồ họa. Do trước đó kênh cũ bị Youtube quét không rõ lý do, trong thời gian chờ kháng cáo nếu các bạn thấy video trên diễn đàn bị die không xem được thì có thể vào kênh mới để tìm xem video sơ cua nhé.
    Loại bỏ thông báo

Cho mình hỏi chút về CODE đếm lùi trong JavaScript

Chủ đề thuộc danh mục 'HTML - CSS - JS - PHP - ASP' được đăng bởi anhtuan1006, 27/9/16.

Lượt xem: 2,355

  1. anhtuan1006 Thành viên cấp 2

    Mình có viết đoạn Code để khi nhập số giây vào trong khung thì sẽ đếm lùi từ giá trị vừa nhập về 0

    và khi hết thời gian thì sẽ hiện thông báo.Tuy nhiên khi chạy CODE nó không thực hiện thao tác đếm lùi mà hiện ra ngay

    thông báo. Mình khoonh biết mình đã sai ở đâu nữa.

    HTML:
    Nhập số giây: <input type="text" value="" id="giay"/>
    <input type="button" value="START" onclick="ham()"/>

    JavaScript:
    var gt = document.getElementById("giay").value ;

    function ham(){
    if(gt >= 0){
    document.getElementById("giay").value = gt;
    gt = gt -1;
    setTimeout("ham()", 1000);
    }
    else{
    alert("Hết thời gian");
    }
    }

    ------------------------------------------------------------------------------------------
    Có 1 điểm là nếu mình thay chỗ màu đỏ bên trên bằng 1 con số thì Code lại chạy đúng. Mình không hiểu tại sao nữa. Rất mong được các bạn giúp đỡ.

    Các bạn có thể vào trang http://codepen.io/ để test CODE cho nhanh nhé

    ...
  2. anhtuan1006

    anhtuan1006 Thành viên cấp 2

    mình cần được sự giúp đỡ của các bạn !!!!!!!!!!!
  3. anhtuan1006

    anhtuan1006 Thành viên cấp 2

    bạn nào biết xin giúp đỡ mình với .........Please !!!!!
  4. anhtuan1006

    anhtuan1006 Thành viên cấp 2

    xin mọi người giúp đỡ với ạ .....
  5. anhtuan1006

    anhtuan1006 Thành viên cấp 2

    hic ... không bạn nào giúp mình với à ...hu hu :((:((:((
  6. nhoxkia1991

    nhoxkia1991 Thành viên cấp 1

    HTML:
    var gt
    function getvalue(){ 
         gt = document.getElementById("giay").value ;
        ham();
    }
    function ham(){ 
         if(gt >= 0){
          document.getElementById("giay").value = gt;
           gt = gt -1;
          setTimeout("ham()", 1000);
       }
       else{
          alert("Hết thời gian");
       }
    }
    đây bạn, do ở trên bạn khai báo gt bên ngoài hàm nên khi submit nó vẫn nhận là giá trị 0 nên nhập bao nhiêu thì cũng sẽ hiện thông báo nhanh. Nên phải tạo thêm 1 hàm và cho button nhận hàm đó để lấy giá trị gt rồi sau đó mới chạy qua hàm đếm.
    anhtuan1006 thích bài viết này
  7. anhtuan1006

    anhtuan1006 Thành viên cấp 2

    Cảm ơn bạn nhoxkia1991 nhiều, mình mày mỏ rồi sửa lại CODE JavaScrip thành thế này:

    var gt;
    function ham(){
    gt = document.getElementById("giay").value ;
    if(gt >= 0){
    gt = gt -1;
    document.getElementById("giay").value = gt;
    setTimeout("ham()", 1000);
    }
    else{
    alert("Hết thời gian");
    }
    }
    ----------------------------------------------------------------
    Thì chạy OK rồi, tuy nhiên nếu mình đổi chỗ dòng màu xanh lên trước dòng màu đỏ thì nó lại

    không chạy nữa. Bạn có thể giải thích cho mình biết tại sao không. Mình cảm ơn bạn nhiều !
  8. nhoxkia1991

    nhoxkia1991 Thành viên cấp 1

    vd bạn nhập input là 10, nếu bạn đổi màu xanh lên trên thì nó vẫn sẽ gán giá trị là 10 cho input rồi mới trừ đi 1, thì nó cứ chạy hoài ko hiện thông báo vì lúc nào cũng giá trị là 10.
    Còn màu đỏ lên trước thì nó sẽ làm phép trừ trước rời mới gán giá tri cho input, cứ thế nó trừ dần dần cho tới khi bằng 0

    Mình giải thích ko được hay lắm :D
    anhtuan1006 thích bài viết này
  9. anhtuan1006

    anhtuan1006 Thành viên cấp 2

    à,mình hiểu rồi bạn... vậy nếu mình muốn nếu nhập số 10 vào thì nó sẽ bắt đầu đếm lùi từ số 10

    chứ không phải từ số 9 như Code bên trên thì phải làm thế nào hả bạn.

    Phiền bạn thêm chút nữa ... mình cảm ơn bạn nhiều !!!!
  10. nhoxkia1991

    nhoxkia1991 Thành viên cấp 1

    Bạn sử dụng code mình đã để trên đó. nếu nhập 10 thì chạy từ 10 đến 0, còn code của bạn chạy từ 9 đến -1
    anhtuan1006 thích bài viết này
  11. anhtuan1006

    anhtuan1006 Thành viên cấp 2

    Bạn nhoxkia1991 CODE bạn cho mình, bấm START cái nó hiện ngay lên thông báo hết thời

    gian. Bạn kiểm tra lại hộ mình với ! Cảm ơn bạn .
  12. nhoxkia1991

    nhoxkia1991 Thành viên cấp 1

    Bạn xem lại onclick cua button phải là hàm getvalue() or xem rõ hơn tại đây
    Code:
    http://codepen.io/anon/pen/amyaWJ
    anhtuan1006 thích bài viết này
  13. anhtuan1006

    anhtuan1006 Thành viên cấp 2

    à mình biết tại sao rồi, bên CODE HTML phải sửa lại tên Function cho sự kiện onclick ( sửa

    onclick="ham()" thành onclick="getvalue()" ) . Như vậy là giải quyết được rồi ...

    Được voi lại đòi Hai Bà Trưng:

    Cho mình hỏi thêm chút, bây giờ nếu bài này mình định xử lý bằng vòng lặp WHILE nhưng đến

    cái chỗ SetimeOut() mình không biết viết lệnh thế nào cả để hết 1 s thì lại quay lại đầu vòng lặp.

    Bạn giúp mình nốt được không ...
  14. anhtuan1006

    anhtuan1006 Thành viên cấp 2

    Bạn đừng "mắng" mình nhiều chuyện nha (híc híc:-s:-s):

    Tại sao trong CODE bạn gửi cho mình , nếu xóa đi dòng CODE đầu tiên (xóa đi dòng này: var gt)

    và thêm từ khóa var vào đầu dòng CODE thứ 3 tức là sửa dòng CODE thứ 3 thành vầy

    var gt=document.getElementById("giay").value ;

    thì CODE lại không được vậy
    -------------------------------------------
    Lần này nếu có bị "mắng" chắc cũng phải chấp nhận thôi ai biểu mình dốt quá ...ặc ặc ~X(~X(~X(
  15. nhoxkia1991

    nhoxkia1991 Thành viên cấp 1

    tất nhiên là ko được rồi, mình khai báo var gt bên ngoài để hàm function nào cũng sử dụng được. bạn khai bao bên trong hàm getvalue() thì chỉ có duy nhất hàm đó là xài được. Còn hàm kia thì sẽ báo lỗi gt không tìm thấy, thế là lỗi.
    anhtuan1006 thích bài viết này
  16. anhtuan1006

    anhtuan1006 Thành viên cấp 2

    Bạn ơi, bạn giúp nốt cho yêu cầu của mình ở bài #13 đi. Cảm ơn bạn nhiều lắm !
  17. nhoxkia1991

    nhoxkia1991 Thành viên cấp 1

    Vòng lặp While thì ko có settimeout nha bạn
    anhtuan1006 thích bài viết này

Ủng hộ diễn đàn