views:

78

answers:

2

Hi Everyone! I have some javascript which runs a timer that animates something on the website.

It all works perfectly but I want to get an image to change when the animation is run, It uses jquery:

if(options.auto && dir=="next" && !clicked)
{
    timeout = setTimeout(function(){
if (document.images['bullet1'].src == "img/bulletwhite.png")
{
        document.images['bullet1'].src = "img/bullet.png";
        document.images['bullet2'].src = "img/bulletwhite.png";
}
animate("next",false);
                    },diff*options.speed+options.pause);
                }

options.auto means that its automatically cycling, dir is the direction of the motion and clicked is whether or not the user clicked it.

Is there something wrong with my syntax here? I ran firebug with it, and it doesn't throw any errors, it simply won't work. Any advice would help!

I should mention that the src of bullet1 starts at bulletwhite.png and then I was hoping for it to change to bullet.png and have bullet2 change to bulletwhite.png.

A: 

According to the code you've posted there's a strange semicolon on second line, but maybe it's just a typo.

Why don't you try a JQuery attr() call instead of using document.images array?

$('img[name="bullet1"]').attr('src', 'img/bullet.png');
mamoo
What is the supposed advantage of using jQuery here over _native_ and w3c-compliant document.images? It is also quite likely that the jQuery approach is a bit slower: parsing the selector expression (+ there's probably some more stuff hidden behind '$(...)') vs. accessing collection property via key
Jaroslav Záruba
this actually worked, but I replaced image with img
Pete Herbert Penito
In other words I was right - you were comparing property to attribute, and it has also nothing to do with jQuery. Also name attribute is deprecated. :)
Jaroslav Záruba
@Pete: argh! 'image' is really bad! Sorry... I'll correct it.
mamoo
+1  A: 
document.images['bullet1'].src == "img/bulletwhite.png"

Are you sure this condition is ever met?

Usually the imageElement.src property holds absolute/resolved version of what is in the src attribute. (This also applies to href attribute/property.)

<img src="/images/img1.png">

...

document.images[0].src => "http://127.0.0.1/images/img1.png"
Jaroslav Záruba
hmm interesting, would this also apply to getElementById?
Pete Herbert Penito
It does not have anything to do with how you obtain reference to the image element, it is still the same element. (In other words: yes.)
Jaroslav Záruba