As long as you can use a global variable, you don't need to. When you use setAttribute / getAttribute, you add something that appears as an attribute in the HTML. You should also be aware that adding a global just adds a variable to a window or navigator or document object (I donβt remember which one).
You can also add it to the object itself (i.e., as a variable that is not visible if the html is viewed, but displayed if you are viewing the html element as an object in the debugger and look at its properties.)
There are two alternatives. 1 saves the alternate image so that it is visible in html and the other does not.
<!DOCTYPE html> <html> <head> <script> function byId(e){return document.getElementById(e);} window.addEventListener('load', mInit, false); function mInit() { var tgt = byId('ImageButton1'); tgt.secondSource = 'images/image2.png'; } function byId(e){return document.getElementById(e);} function action() { var tgt = byId('ImageButton1'); var tmp = tgt.src; tgt.src = tgt.secondSource; tgt.secondSource = tmp; }; function action2() { var tgt = byId('imgBtn1'); var tmp = tgt.src; tgt.src = tgt.getAttribute('src2'); tgt.setAttribute('src2', tmp); } </script> <style> </style> </head> <body> <button onClick="action();">click me<img src="images/image1.png" width="16px" id="ImageButton1"></button> <br> <button onClick="action2();">click me<img id='imgBtn1' src="images/image1.png" src2='images/image2.png' width="16px"></button> </body> </html>
source share