JS eval bug FF-ban
Sziasztok!
az alábbi szkript miért nem működik FF-ban?
consol: val1 is not definedez IE-ben szépen működik, kattintásra lecseréli a ch0.gif-et ch1.gif-re. FF-ban első kattintás után behal a szkript.
előre is köszönöm!
■ az alábbi szkript miért nem működik FF-ban?
consol: val1 is not defined
<html>
<head>
<script language="javascript">
var melyik;
melyik=0;
function valaszt(th) {
var s,i;
if (melyik>0)
eval("val"+melyik).src="ch0.gif";
nev=th.name;
melyik=nev.substring(3,5);
eval(th).src="ch1.gif";
}
</script>
</head>
<body>
<img name="val1" src="ch0.gif" onclick="valaszt(this)">első<br>
<img name="val2" src="ch0.gif" onclick="valaszt(this)">második<br>
<img name="val3" src="ch0.gif" onclick="valaszt(this)">harmadik<br>
<img name="val4" src="ch0.gif" onclick="valaszt(this)">negyedik<br>
<img name="val5" src="ch0.gif" onclick="valaszt(this)">ötödik<br>
<br><br>
<a href="javascript:alert(melyik);">Szavazok</a>
</body>
</html>
előre is köszönöm!
eval
Amúgy a konkrét hiba a 15-ös sorban van: az egy dolog, hogy egy name-et eval-ozol, itt viszont magát az objektumot (pontosabban a toString függvénye eredményét) futtatod át az eval-on. A 15-ös sor akkor lenne egyenértékű a12-essel, ha eval(th.name) lenne, de minek eval oda, ha a th már eleve tartalmazza az objektumot. Tehát th.src -re símán hivatkozhatnál abban a sorban. - De ez mind csak zárójelben. Tessék a DOM megfelelő technikáit hazsnálni!
Mellesleg a melyik változóba tárolhatnád magát a th objektumot is (ha egyszer már megkaptad), így nem kéne bohóckodni substringekkel, meg eggyel kevesebb névfeloldás kéne bele.