View difference between Paste ID: kB2FDp1B and WsNyFyXH
SHOW: | | - or go back to the newest paste.
1
// This is an improved version of https://stackoverflow.com/a/5835533/1175714
2
3
function slideLoop(currMarg, selector){
4
    let contStyle = document.querySelector(selector).style;
5
6
    return function(){
7
        currMarg = (currMarg == 1800) ? (0) : (currMarg + 600);
8
        contStyle.marginLeft = "-%dpx".replace("%d", curMarg);
9
    }
10
}
11
12
function slide() {    
13
    return setInterval(slideLoop(0, "#container"), 3000);
14
}
15
16
17
// Notes:
18
// Use document.querySelector(css_selector) instead of document.getElementById(id)
19
// Always track setInterval(fn, interval)'s return value so it can later be closed with clearInterval(interval_id)
20
// Put the interval's callback into its own formal function for readability and maintainability
21
// If state is kept with the callback, the callback should be returned from another function (slideLoop) to form a closure.
22
// Use proper whitespace. Logical blocks that do different things should be separated by one empty line
23
// Avoid "string" + value + "string" + ... Make a format function or use String.prototype.replace(string/regex, new_string)
24
// Always surround the arguments of your ternary expressions with parens. It aids readability and prevents bugs.