News for hackers. Stuff that matters.
Re:-= sequoia capital =- by ars on Wednesday August 19, 2009 @07:39PM (#774085)
Just a small note - you should not explicitly set the visibility to "visible", set it to the empty string "" instead. This way you don't overwrite the default property if it was something else.

And you can skip the blinkOn variable by:

  blinks[i].style.visibility = blinks[i].style.visibility == "" ? "hidden" : "";
Re:-= sequoia capital =- by invisible on Wednesday August 19, 2009 @09:12PM (#774206)
That's actually way slower because you're doing a comparison within an iteration. That's putting an if statement inside a loop while the result is the same for every iteration.
Re:-= sequoia capital =- by ars on Wednesday August 19, 2009 @09:35PM (#774236)
Computers are not that slow these days :)

It reduces complexity and a global, which is far more important.

And that blink loop is probably not that big - just how many blink tags do you have?

I don't use it for blink loops anyway, I use it for toggle on/off, where keeping state for each element individually is pretty important.

Re:-= sequoia capital =- by invisible on Thursday August 20, 2009 @01:10PM (#775495)
You're accessing the DOM every iteration, so I'd bet that it does matter somewhat if blink is used a lot.

You can avoid polluting by make it an actual function and then setting the function.blinkOn instead.

You're right: individually swapping them this works better, but the intent is to have them all off or all on.

  (function() {
    var blinkIterator = function() {
        var blinks = document.getElementsByTagName("blink"),
         onOff = blinkIterator.blinkOn ? "" : "hidden";
        for (var i = 0, l = blinks.length; i < l;)
            blinks[i++].style.visibility = onOff;
        blinkIterator.blinkOn ^= 1;
    };
    blinkIterator.blinkOn = 1;
    window.setInterval(blinkIterator, 750);
  })();