-
-
Save stdclass/1175365 to your computer and use it in GitHub Desktop.
var blinkify = function( el, // DOM-Element | |
rate // Speed (Default: 500 ms) | |
){ | |
setInterval(function(){ // Interval | |
el.style.opacity ^= 1 // change the visibility | |
}, rate || 500 ); |
function(a,b){setInterval(function(){a.style.opacity^=1},b||500)} |
DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE | |
Version 2, December 2004 | |
Copyright (C) 2011 YOUR_NAME_HERE <YOUR_URL_HERE> | |
Everyone is permitted to copy and distribute verbatim or modified | |
copies of this license document, and changing it is allowed as long | |
as the name is changed. | |
DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE | |
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION | |
0. You just DO WHAT THE FUCK YOU WANT TO. |
{ | |
"name": "blinkify", | |
"description": "The Comeback of the Blink-Tag", | |
"keywords": [ | |
"blink", | |
"blinktag", | |
"retro" | |
] | |
} |
<!doctype html> | |
<html> | |
<head> | |
</head> | |
<body> | |
<b id="test">BLINKY</b><br /> | |
<b id="test2">BLINKY - fast</b> | |
<script> | |
var blinkify = function( el, rate ){ | |
setInterval(function(){ | |
el.style.opacity ^= 1 | |
}, rate || 500 ); | |
} | |
blinkify( document.getElementById( "test" ) ); | |
blinkify( document.getElementById( "test2" ), 100 ); | |
</script> | |
</body> | |
</html> |
Normally I would say keep the "visible" for there might very well be a CSS rule setting it to "hidden", but this is 140byt.es so...
atk I don't know if this is a typo, but you used a BINARY OR in the delay instead of the LOGICAL OR. This will mess up most delays: the |
and ``||` only rarely have the same result.
Just a typo, fixed. Update: thanks, @phillipdornauer
Thanks to @atk we can go further and exploit the falsiness of empty string:
function(a,b){setInterval(function(){a.style.visibility=b=!b?"hidden":""},b||500)}
(82 bytes)
reordered to save the !
:
function(a,b){setInterval(function(){b=a.style.visibility=b?"":"hidden"},b||500)}
(81 bytes)
Subzey, jed: that was one sweet move.
Sacrificing a little more backward compatibility we can reach 70 bytes:
function(a,b){setInterval(function(){b=a.style.opacity=b?0:1},b||500)}
well, if you're gonna go down that road...
function(a,b){setInterval(function(){b=a.style.opacity=+!b},b||500)}
(68 bytes)
or for that matter:
function d(a,b,c){c=a.style.opacity=+!c;setTimeout(d,b||500,a,b,c)}
(67 bytes)
or even:
function d(a,b,c){setTimeout(d,b||500,a,b,a.style.opacity=+!c)}
(63 bytes, assuming you're okay with losing old browsers)
Interesting.
Supporting the current and previous version of each major browser would be nice. No ?
IE8, does not support setTimeout(function,delay,arg1,arg2,...)
, so... 68 ?
i'm happy with 68 (unless we want to dial down the default to 99
for 67).
Oh dear, it's amazing.
And finally i make bitwise trick useful.
function(a,b){setInterval(function(){a.style.opacity^=1},b||500)}
(65 bytes)
whoa, nice! i think that's the first useful XOR assignment i've ever seen here.
I think that's it. There's not much code left to optimize here.
Sorry for the b=...=b?0:1
in my previous comment. That was lazy. It was obvious there was room for improvements.
Would you mind either adapting or removing the README.md? Thank you! Additionally, you could omit the "visible" (because it is set by default anyway):
function(a,b){setInterval(function(){a.style.visibility=(b=!b)?"hidden":""},b||500)}