javascript: หยุดชั่วคราว setTimeout ();


118

ถ้าผมมีหมดเวลาการทำงานที่ใช้งานที่ได้รับการตั้งค่าผ่านvar t = setTimeout("dosomething()", 5000),

มีการหยุดชั่วคราวและดำเนินการต่อหรือไม่


มีวิธีใดบ้างที่จะทำให้เวลาที่เหลืออยู่ในการหมดเวลาปัจจุบัน
หรือฉันต้องอยู่ในตัวแปรเมื่อตั้งค่าการหมดเวลาเก็บเวลาปัจจุบันแล้วเราหยุดชั่วคราวได้รับความแตกต่างระหว่างตอนนี้กับตอนนั้น


1
สำหรับผู้ที่สงสัยการหยุดชั่วคราวมีไว้สำหรับเช่น div ถูกตั้งค่าให้หายไปใน 5 วินาทีที่ 3 วินาที (เหลืออีก 2 วินาที) ผู้ใช้วางเมาส์เหนือ div คุณจะหยุดการหมดเวลาชั่วคราวเมื่อผู้ใช้เลื่อนออกจาก div คุณดำเนินการต่อ 2 วินาทีหลังจากนั้นจะหายไป
Hailwood

คำตอบ:


261

คุณสามารถห่อwindow.setTimeoutแบบนี้ซึ่งฉันคิดว่าคล้ายกับที่คุณแนะนำในคำถาม:

var Timer = function(callback, delay) {
    var timerId, start, remaining = delay;

    this.pause = function() {
        window.clearTimeout(timerId);
        remaining -= Date.now() - start;
    };

    this.resume = function() {
        start = Date.now();
        window.clearTimeout(timerId);
        timerId = window.setTimeout(callback, remaining);
    };

    this.resume();
};

var timer = new Timer(function() {
    alert("Done!");
}, 1000);

timer.pause();
// Do some stuff...
timer.resume();

3
@yckart: รีดกลับขอโทษ เป็นการเพิ่มที่ดียกเว้นว่าการเพิ่มพารามิเตอร์เพิ่มเติมจะsetTimeout()ไม่ทำงานใน Internet Explorer <= 9
Tim Down

4
หากคุณทำtimer.resume(); timer.resume();คุณจะต้องหมดเวลาสองครั้งพร้อมกัน นั่นเป็นเหตุผลที่คุณต้องทำclearTimeout(timerId)ก่อนหรือทำif (timerId) return;ไฟฟ้าลัดวงจรที่จุดเริ่มต้นของประวัติย่อ
kernel

2
สวัสดีฉันชอบคำตอบนี้ แต่ฉันต้องดึง: var timerId, start, remaining;นอกขอบเขตชั้นเรียนและเพิ่มremaining = delay;กลับเข้าไปข้างในเพื่อจับพารามิเตอร์ ใช้งานได้เหมือนมีเสน่ห์!
phillihp

1
@ Josh979: คุณไม่จำเป็นต้องทำอย่างนั้นจริงๆและเป็นความคิดที่ดีที่จะทำเพราะมันแสดงให้เห็นตัวแปรที่ควรอยู่ภายใน บางทีคุณอาจได้วางโค้ดลงในบล็อก (เช่นใน an if (blah) { ... }) หรืออะไร?
Tim Down

1
ด้วยเหตุผลบางประการสิ่งนี้จะทำงานสำหรับฉันเพียงครั้งเดียวหลังจากเริ่มต้นแล้ว
peterxz

17

สิ่งนี้ควรทำเคล็ดลับ

function Timer(fn, countdown) {
    var ident, complete = false;

    function _time_diff(date1, date2) {
        return date2 ? date2 - date1 : new Date().getTime() - date1;
    }

    function cancel() {
        clearTimeout(ident);
    }

    function pause() {
        clearTimeout(ident);
        total_time_run = _time_diff(start_time);
        complete = total_time_run >= countdown;
    }

    function resume() {
        ident = complete ? -1 : setTimeout(fn, countdown - total_time_run);
    }

    var start_time = new Date().getTime();
    ident = setTimeout(fn, countdown);

    return { cancel: cancel, pause: pause, resume: resume };
}

ฉันเปลี่ยน+new Date()เป็นnew Date().getTime()เพราะมันเร็วกว่า: jsperf.com/date-vs-gettime
yckart

9

ไม่ได้คุณจะต้องยกเลิก ( clearTimeout) วัดเวลาตั้งแต่เริ่มต้นและเริ่มต้นใหม่ด้วยเวลาใหม่


7

รุ่นแก้ไขเล็กน้อยของทิมดอนคำตอบ อย่างไรก็ตามเนื่องจาก Tim ย้อนกลับการแก้ไขของฉันฉันจึงต้องตอบคำถามนี้ด้วยตัวเอง โซลูชันของฉันทำให้สามารถใช้argumentsพารามิเตอร์พิเศษเป็นพารามิเตอร์ที่สาม (3, 4, 5 ... ) และเพื่อล้างตัวจับเวลา:

function Timer(callback, delay) {
    var args = arguments,
        self = this,
        timer, start;

    this.clear = function () {
        clearTimeout(timer);
    };

    this.pause = function () {
        this.clear();
        delay -= new Date() - start;
    };

    this.resume = function () {
        start = new Date();
        timer = setTimeout(function () {
            callback.apply(self, Array.prototype.slice.call(args, 2, args.length));
        }, delay);
    };

    this.resume();
}

ดังที่ทิมกล่าวไว้ไม่มีพารามิเตอร์เพิ่มเติมIE lt 9แต่ฉันพยายามทำงานเล็กน้อยเพื่อให้มันใช้งานoldIEได้เช่นกัน

การใช้งาน: new Timer(Function, Number, arg1, arg2, arg3...)

function callback(foo, bar) {
    console.log(foo); // "foo"
    console.log(bar); // "bar"
}

var timer = new Timer(callback, 1000, "foo", "bar");

timer.pause();
document.onclick = timer.resume;

6

"หยุด" และ "ประวัติส่วนตัว" ไม่ได้จริงๆทำให้รู้สึกมากในบริบทของsetTimeoutซึ่งเป็นone-offสิ่ง คุณหมายถึงsetInterval? หากเป็นเช่นนั้นคุณไม่สามารถหยุดชั่วคราวได้คุณสามารถยกเลิกได้เท่านั้น ( clearInterval) แล้วกำหนดเวลาใหม่อีกครั้ง รายละเอียดทั้งหมดนี้ในส่วนตัวจับเวลาของข้อมูลจำเพาะ

// Setting
var t = setInterval(doSomething, 1000);

// Pausing (which is really stopping)
clearInterval(t);
t = 0;

// Resuming (which is really just setting again)
t = setInterval(doSomething, 1000);

16
ในบริบทของ setTimeout การหยุดชั่วคราวและดำเนินการต่อยังคงสมเหตุสมผล
dbkaplun

6

การหมดเวลานั้นง่ายพอที่จะหาทางแก้ไขได้ แต่ช่วงเวลานั้นค่อนข้างยากกว่าเล็กน้อย

ฉันคิดสองคลาสต่อไปนี้เพื่อแก้ปัญหานี้:

function PauseableTimeout(func, delay){
    this.func = func;

    var _now = new Date().getTime();
    this.triggerTime = _now + delay;

    this.t = window.setTimeout(this.func,delay);

    this.paused_timeLeft = 0;

    this.getTimeLeft = function(){
        var now = new Date();

        return this.triggerTime - now;
    }

    this.pause = function(){
        this.paused_timeLeft = this.getTimeLeft();

        window.clearTimeout(this.t);
        this.t = null;
    }

    this.resume = function(){
        if (this.t == null){
            this.t = window.setTimeout(this.func, this.paused_timeLeft);
        }
    }

    this.clearTimeout = function(){ window.clearTimeout(this.t);}
}

function PauseableInterval(func, delay){
    this.func = func;
    this.delay = delay;

    this.triggerSetAt = new Date().getTime();
    this.triggerTime = this.triggerSetAt + this.delay;

    this.i = window.setInterval(this.func, this.delay);

    this.t_restart = null;

    this.paused_timeLeft = 0;

    this.getTimeLeft = function(){
        var now = new Date();
        return this.delay - ((now - this.triggerSetAt) % this.delay);
    }

    this.pause = function(){
        this.paused_timeLeft = this.getTimeLeft();
        window.clearInterval(this.i);
        this.i = null;
    }

    this.restart = function(sender){
        sender.i = window.setInterval(sender.func, sender.delay);
    }

    this.resume = function(){
        if (this.i == null){
            this.i = window.setTimeout(this.restart, this.paused_timeLeft, this);
        }
    }

    this.clearInterval = function(){ window.clearInterval(this.i);}
}

สิ่งเหล่านี้สามารถดำเนินการได้ดังนี้:

var pt_hey = new PauseableTimeout(function(){
    alert("hello");
}, 2000);

window.setTimeout(function(){
    pt_hey.pause();
}, 1000);

window.setTimeout("pt_hey.start()", 2000);

ตัวอย่างนี้จะตั้งค่าการหมดเวลาที่หยุดชั่วคราวได้ (pt_hey) ซึ่งกำหนดให้แจ้งเตือน "เฮ้" หลังจากผ่านไปสองวินาที การหมดเวลาอื่นจะหยุด pt_hey ชั่วคราวหลังจากผ่านไปหนึ่งวินาที การหมดเวลาครั้งที่สามจะดำเนินการต่อ pt_hey หลังจากผ่านไปสองวินาที pt_hey ทำงานเป็นเวลาหนึ่งวินาทีหยุดชั่วคราวหนึ่งวินาทีจากนั้นเริ่มทำงานต่อ pt_hey ทริกเกอร์หลังจากสามวินาที

ตอนนี้สำหรับช่วงเวลาที่ยากลำบาก

var pi_hey = new PauseableInterval(function(){
    console.log("hello world");
}, 2000);

window.setTimeout("pi_hey.pause()", 5000);

window.setTimeout("pi_hey.resume()", 6000);

ตัวอย่างนี้กำหนดช่วงเวลาที่หยุดชั่วคราวได้ (pi_hey) เพื่อเขียน "hello world" ในคอนโซลทุกๆสองวินาที การหมดเวลาจะหยุด pi_hey ชั่วคราวหลังจากผ่านไปห้าวินาที การหมดเวลาอื่นจะดำเนินการต่อจาก pi_hey หลังจากหกวินาที ดังนั้น pi_hey จะทริกเกอร์สองครั้งรันเป็นเวลาหนึ่งวินาทีหยุดชั่วคราวหนึ่งวินาทีทำงานหนึ่งวินาทีจากนั้นทริกเกอร์ต่อทุกๆ 2 วินาที

ฟังก์ชั่นอื่น ๆ

  • clearTimeout ()และclearInterval ()

    pt_hey.clearTimeout();และpi_hey.clearInterval();เป็นวิธีง่ายๆในการล้างระยะหมดเวลาและช่วงเวลา

  • getTimeLeft ()

    pt_hey.getTimeLeft();และpi_hey.getTimeLeft();จะส่งคืนจำนวนมิลลิวินาทีจนกว่าจะมีการกำหนดให้ทริกเกอร์ถัดไปเกิดขึ้น


คุณสามารถอธิบายความคิดของคุณว่าทำไมเราต้องมีความซับซ้อนระดับที่จะหยุดsetInterval? ฉันคิดว่าวิธีง่ายๆif(!true) return;จะทำเคล็ดลับหรือฉันคิดผิด?
yckart

2
ฉันสร้างมันขึ้นมาเพื่อให้คุณสามารถหยุดช่วงเวลาชั่วคราวได้อย่างแท้จริงแทนที่จะข้ามการโทรเมื่อเรียก หากในเกมการเปิดเครื่องถูกปล่อยออกมาทุกๆ 60 วินาทีและฉันหยุดเกมชั่วคราวก่อนที่เกมจะเริ่มทำงานโดยใช้วิธีของคุณฉันจะต้องรออีกหนึ่งนาทีเพื่อเปิดเครื่องอีกครั้ง นั่นไม่ใช่การหยุดชั่วคราวอย่างแท้จริงนั่นเป็นเพียงการเพิกเฉยต่อการโทร แต่วิธีการของฉันกำลังหยุดชั่วคราวดังนั้นการเปิดเครื่องจะถูกปล่อย 'ตรงเวลา' ในส่วนที่เกี่ยวกับการเล่นเกม
TheCrzyMan

2

ฉันต้องการคำนวณเวลาที่ผ่านไปและเวลาที่เหลือเพื่อแสดงแถบความคืบหน้า การใช้คำตอบที่ยอมรับนั้นไม่ใช่เรื่องง่าย 'setInterval' ดีกว่า 'setTimeout' สำหรับงานนี้ ดังนั้นฉันจึงสร้างคลาสตัวจับเวลานี้ที่คุณสามารถใช้ในโปรเจ็กต์ใดก็ได้

https://jsfiddle.net/ashraffayad/t0mmv853/

'use strict';


    //Constructor
    var Timer = function(cb, delay) {
      this.cb = cb;
      this.delay = delay;
      this.elapsed = 0;
      this.remaining = this.delay - self.elapsed;
    };

    console.log(Timer);

    Timer.prototype = function() {
      var _start = function(x, y) {
          var self = this;
          if (self.elapsed < self.delay) {
            clearInterval(self.interval);
            self.interval = setInterval(function() {
              self.elapsed += 50;
              self.remaining = self.delay - self.elapsed;
              console.log('elapsed: ' + self.elapsed, 
                          'remaining: ' + self.remaining, 
                          'delay: ' + self.delay);
              if (self.elapsed >= self.delay) {
                clearInterval(self.interval);
                self.cb();
              }
            }, 50);
          }
        },
        _pause = function() {
          var self = this;
          clearInterval(self.interval);
        },
        _restart = function() {
          var self = this;
          self.elapsed = 0;
          console.log(self);
          clearInterval(self.interval);
          self.start();
        };

      //public member definitions
      return {
        start: _start,
        pause: _pause,
        restart: _restart
      };
    }();


    // - - - - - - - - how to use this class

    var restartBtn = document.getElementById('restart');
    var pauseBtn = document.getElementById('pause');
    var startBtn = document.getElementById('start');

    var timer = new Timer(function() {
      console.log('Done!');
    }, 2000);

    restartBtn.addEventListener('click', function(e) {
      timer.restart();
    });
    pauseBtn.addEventListener('click', function(e) {
      timer.pause();
    });
    startBtn.addEventListener('click', function(e) {
      timer.start();
    });

2

/ ฟื้นฟู

เวอร์ชัน ES6 ที่ใช้น้ำตาลไวยากรณ์ Class-y 💋

(แก้ไขเล็กน้อย: เพิ่ม start ())

class Timer {
  constructor(callback, delay) {
    this.callback = callback
    this.remainingTime = delay
    this.startTime
    this.timerId
  }

  pause() {
    clearTimeout(this.timerId)
    this.remainingTime -= new Date() - this.startTime
  }

  resume() {
    this.startTime = new Date()
    clearTimeout(this.timerId)
    this.timerId = setTimeout(this.callback, this.remainingTime)
  }

  start() {
    this.timerId = setTimeout(this.callback, this.remainingTime)
  }
}

// supporting code
const pauseButton = document.getElementById('timer-pause')
const resumeButton = document.getElementById('timer-resume')
const startButton = document.getElementById('timer-start')

const timer = new Timer(() => {
  console.log('called');
  document.getElementById('change-me').classList.add('wow')
}, 3000)

pauseButton.addEventListener('click', timer.pause.bind(timer))
resumeButton.addEventListener('click', timer.resume.bind(timer))
startButton.addEventListener('click', timer.start.bind(timer))
<!doctype html>
<html>
<head>
  <title>Traditional HTML Document. ZZz...</title>
  <style type="text/css">
    .wow { color: blue; font-family: Tahoma, sans-serif; font-size: 1em; }
  </style>
</head>
<body>
  <h1>DOM &amp; JavaScript</h1>

  <div id="change-me">I'm going to repaint my life, wait and see.</div>

  <button id="timer-start">Start!</button>
  <button id="timer-pause">Pause!</button>
  <button id="timer-resume">Resume!</button>
</body>
</html>


1

คุณสามารถดูclearTimeout ()

หรือหยุดชั่วคราวขึ้นอยู่กับตัวแปรส่วนกลางที่ตั้งค่าไว้เมื่อมีการกดเงื่อนไขบางอย่าง เหมือนมีการกดปุ่ม

  <button onclick="myBool = true" > pauseTimeout </button>

  <script>
  var myBool = false;

  var t = setTimeout(function() {if (!mybool) {dosomething()}}, 5000);
  </script>

1

คุณยังสามารถนำไปใช้กับเหตุการณ์ต่างๆ

แทนที่จะคำนวณความแตกต่างของเวลาคุณเริ่มและหยุดฟังเหตุการณ์ 'ติ๊ก' ซึ่งทำงานอยู่เบื้องหลัง:

var Slideshow = {

  _create: function(){                  
    this.timer = window.setInterval(function(){
      $(window).trigger('timer:tick'); }, 8000);
  },

  play: function(){            
    $(window).bind('timer:tick', function(){
      // stuff
    });       
  },

  pause: function(){        
    $(window).unbind('timer:tick');
  }

};

1

หากคุณใช้ jquery อยู่ให้ตรวจสอบ$ .doTimeoutปลั๊กอินสิ่งนี้เป็นการปรับปรุงครั้งใหญ่ใน setTimeout ซึ่งรวมถึงการให้คุณติดตามการหมดเวลาของคุณด้วยรหัสสตริงเดียวที่คุณระบุและจะไม่เปลี่ยนแปลงทุกครั้งที่คุณตั้งค่าและใช้การยกเลิกการวนซ้ำและการดีบักแบบง่ายและ มากกว่า. หนึ่งในปลั๊กอิน jquery ที่ฉันใช้มากที่สุด

น่าเสียดายที่ไม่รองรับการหยุดชั่วคราว / ดำเนินการต่อนอกกรอบ สำหรับสิ่งนี้คุณจะต้องห่อหรือขยาย $ .doTimeout ซึ่งน่าจะคล้ายกับคำตอบที่ยอมรับ


ฉันหวังว่า doTimeout จะหยุดชั่วคราว / ดำเนินการต่อ แต่ฉันไม่เห็นเมื่อดูเอกสารฉบับเต็มตัวอย่างการวนซ้ำและแม้แต่แหล่งที่มา สิ่งที่ใกล้เคียงที่สุดในการหยุดชั่วคราวที่ฉันเห็นคือยกเลิก แต่ฉันต้องสร้างตัวจับเวลาใหม่ด้วยฟังก์ชันอีกครั้ง ฉันพลาดอะไรไปหรือเปล่า?
ericslaw

ขออภัยที่พาคุณไปผิดทาง ฉันได้ลบความไม่ถูกต้องนั้นออกจากคำตอบของฉันแล้ว
Ben Roberts

1

ฉันจำเป็นต้องสามารถหยุด setTimeout () ชั่วคราวสำหรับคุณสมบัติคล้ายสไลด์โชว์

นี่คือการใช้งานตัวจับเวลาที่หยุดชั่วคราวของฉันเอง มันรวมความคิดเห็นที่เห็นในคำตอบของ Tim Down เช่นการหยุดชั่วคราวที่ดีขึ้น (ความคิดเห็นของเคอร์เนล) และรูปแบบของการสร้างต้นแบบ (ความคิดเห็นของ Umur Gedik)

function Timer( callback, delay ) {

    /** Get access to this object by value **/
    var self = this;



    /********************* PROPERTIES *********************/
    this.delay = delay;
    this.callback = callback;
    this.starttime;// = ;
    this.timerID = null;


    /********************* METHODS *********************/

    /**
     * Pause
     */
    this.pause = function() {
        /** If the timer has already been paused, return **/
        if ( self.timerID == null ) {
            console.log( 'Timer has been paused already.' );
            return;
        }

        /** Pause the timer **/
        window.clearTimeout( self.timerID );
        self.timerID = null;    // this is how we keep track of the timer having beem cleared

        /** Calculate the new delay for when we'll resume **/
        self.delay = self.starttime + self.delay - new Date().getTime();
        console.log( 'Paused the timer. Time left:', self.delay );
    }


    /**
     * Resume
     */
    this.resume = function() {
        self.starttime = new Date().getTime();
        self.timerID = window.setTimeout( self.callback, self.delay );
        console.log( 'Resuming the timer. Time left:', self.delay );
    }


    /********************* CONSTRUCTOR METHOD *********************/

    /**
     * Private constructor
     * Not a language construct.
     * Mind var to keep the function private and () to execute it right away.
     */
    var __construct = function() {
        self.starttime = new Date().getTime();
        self.timerID = window.setTimeout( self.callback, self.delay )
    }();    /* END __construct */

}   /* END Timer */

ตัวอย่าง:

var timer = new Timer( function(){ console.log( 'hey! this is a timer!' ); }, 10000 );
timer.pause();

ในการทดสอบรหัสให้ใช้timer.resume()และtimer.pause()สองสามครั้งและตรวจสอบว่าเหลือเวลาเท่าไร (ตรวจสอบให้แน่ใจว่าคอนโซลของคุณเปิดอยู่)

การใช้วัตถุนี้แทน setTimeout () นั้นง่ายพอ ๆtimerID = setTimeout( mycallback, 1000)กับการแทนที่ด้วยtimer = new Timer( mycallback, 1000 ). จากนั้นtimer.pause()และtimer.resume()พร้อมใช้งานสำหรับคุณ



0

การใช้งาน typescript ตามคำตอบยอดนิยม

/** Represents the `setTimeout` with an ability to perform pause/resume actions */
export class Timer {
    private _start: Date;
    private _remaining: number;
    private _durationTimeoutId?: NodeJS.Timeout;
    private _callback: (...args: any[]) => void;
    private _done = false;
    get done () {
        return this._done;
    }

    constructor(callback: (...args: any[]) => void, ms = 0) {
        this._callback = () => {
            callback();
            this._done = true;
        };
        this._remaining = ms;
        this.resume();
    }

    /** pauses the timer */
    pause(): Timer {
        if (this._durationTimeoutId && !this._done) {
            this._clearTimeoutRef();
            this._remaining -= new Date().getTime() - this._start.getTime();
        }
        return this;
    }

    /** resumes the timer */
    resume(): Timer {
        if (!this._durationTimeoutId && !this._done) {
            this._start = new Date;
            this._durationTimeoutId = setTimeout(this._callback, this._remaining);
        }
        return this;
    }

    /** 
     * clears the timeout and marks it as done. 
     * 
     * After called, the timeout will not resume
     */
    clearTimeout() {
        this._clearTimeoutRef();
        this._done = true;
    }

    private _clearTimeoutRef() {
        if (this._durationTimeoutId) {
            clearTimeout(this._durationTimeoutId);
            this._durationTimeoutId = undefined;
        }
    }

}

0

คุณสามารถทำดังนี้เพื่อให้ setTimeout หยุดชั่วคราวที่ฝั่งเซิร์ฟเวอร์ (Node.js)

const PauseableTimeout = function(callback, delay) {
    var timerId, start, remaining = delay;

    this.pause = function() {
        global.clearTimeout(timerId);
        remaining -= Date.now() - start;
    };

    this.resume = function() {
        start = Date.now();
        global.clearTimeout(timerId);
        timerId = global.setTimeout(callback, remaining);
    };

    this.resume();
};

และคุณสามารถตรวจสอบได้ดังต่อไปนี้

var timer = new PauseableTimeout(function() {
    console.log("Done!");
}, 3000);
setTimeout(()=>{
    timer.pause();
    console.log("setTimeout paused");
},1000);

setTimeout(()=>{
    console.log("setTimeout time complete");
},3000)

setTimeout(()=>{
    timer.resume();
    console.log("setTimeout resume again");
},5000)

-1

ผมไม่คิดว่าคุณจะพบสิ่งที่ดีกว่าclearTimeout อย่างไรก็ตามคุณสามารถกำหนดระยะหมดเวลาอื่นได้ในภายหลังแทนการ "เริ่มต้นใหม่"


-1

หากคุณมี div หลายอันที่จะซ่อนคุณสามารถใช้ an setIntervalและรอบหลาย ๆ รอบเพื่อทำดังนี้:

<div id="div1">1</div><div id="div2">2</div>
<div id="div3">3</div><div id="div4">4</div>
<script>
    function hideDiv(elm){
        var interval,
            unit = 1000,
            cycle = 5,
            hide = function(){
                interval = setInterval(function(){
                    if(--cycle === 0){
                        elm.style.display = 'none';
                        clearInterval(interval);
                    }
                    elm.setAttribute('data-cycle', cycle);
                    elm.innerHTML += '*';
                }, unit);
            };
        elm.onmouseover = function(){
            clearInterval(interval);
        };
        elm.onmouseout = function(){
            hide();
        };
        hide();
    }
    function hideDivs(ids){
        var id;
        while(id = ids.pop()){
            hideDiv(document.getElementById(id));
        }
    }
    hideDivs(['div1','div2','div3','div4']);
</script>
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.