You are here: irt.org | FAQ | JavaScript | Link | Q1270 [ previous next ]
Create two sets of three images:
home0.gif home1.gif home2.gif test0.gif test1.gif test2.gif
Then use the following test JavaScript code and follow the instructions at the end:
<script language="JavaScript"><!-- if (document.images) { home0 = new Image(); home0.src = "home0.gif"; home1 = new Image(); home1.src = "home1.gif"; home2 = new Image(); home2.src = "home2.gif"; test0 = new Image(); test0.src = "test0.gif"; test1 = new Image(); test1.src = "test1.gif"; test2 = new Image(); test2.src = "test2.gif"; } function change1(name,no) { if (document.images) { document.images[name].src = eval(name + no + '.src'); } } function change2(name1,no1,name2,no2) { if (document.images) { document.images[name1].src = eval(name1 + no1 + '.src'); document.images[name2].src = eval(name2 + no2 + '.src'); } } function change3(name1,no1,name2,no2) { if (document.images) { document.images[name1].src = eval(name1 + no1 + '.src'); document.images[name2].src = eval(name2 + no2 + '.src'); } return false; } var url; function change4(name1,no1,name2,no2,href) { if (document.images) { document.images[name1].src = eval(name1 + no1 + '.src'); document.images[name2].src = eval(name2 + no2 + '.src'); } url = href setTimeout('location.href = url',1); return false; } //--></script> <p> <img name="home" width="47" height="13" border="0" alt="home" src="home0.gif"> <img name="test" width="47" height="13" border="0" alt="test" src="test0.gif"> </p> <p> <a href="next.htm" onMouseOver="change1('home',1);change1('test',1)" onMouseOut="change1('home',0);change1('test',0)" onClick="change1('home',2);change1('test',2)">test 1</a> </p> <p> <a href="next.htm" onMouseOver="change1('home',1);change1('test',1)" onMouseOut="change1('home',0);change1('test',0)" onClick="change2('home',2,'test',2)">test 2</a> </p> <p> <a href="next.htm" onMouseOver="change1('home',1);change1('test',1)" onMouseOut="change1('home',0);change1('test',0)" onClick="return change3('home',2,'test',2)">test 3</a> </p> <p> <a href="next.htm" onMouseOver="change1('home',1);change1('test',1)" onMouseOut="change1('home',0);change1('test',0)" onClick="return change4('home',2,'test',2,this.href)">test 4</a> </p>
First do mouseovers on all four links - they all swap both images on mouse over/out.
Then click test 1 (make sure you haven't got a next.htm page) - the home image swaps, but not the test, and you get a page not found.
Then click test 2 (make sure you haven't got a next.htm page) - the home image swaps, but not the test, and you get a page not found.
Then click test 3 (make sure you haven't got a next.htm page) - the home image swaps AND the test image swaps, and you don't get a page not found.
Then click test 1 (make sure you haven't got a next.htm page) - the home image swaps AND AMAZINGLY the test image swaps, and you get a page not found.
Then click test 2 (make sure you haven't got a next.htm page) - the home image swaps AND AMAZINGLY the test image swaps, and you get a page not found.
This shows that the browsers "logic" has somehow changed!
Then close the browser completely down and restart it again.
Then click test 1 (make sure you haven't got a next.htm page) - the home image swaps, but not the test, and you get a page not found.
Then click test 2 (make sure you haven't got a next.htm page) - the home image swaps, but not the test, and you get a page not found.
Then click test 4 (make sure you HAVE got a next.htm page) - the home image swaps, and the test image swaps, and the page changes.
The solution is to just use test 4 in all circumstances.