Autor Zpráva
horakcl
Profil
Tento kód:
<body onLoad="Nuluj()"; onKeyPress="alert(event.KeyCode)";>
vypíše po stisku klávesy - asi jakékoliv- undefined Proč ?
Chamurappi
Profil
Reaguji na horakcl:
Protože tam má být event.keyCode a nikoliv event.KeyCode. Na velikosti písmen záleží.
U onkeypress zřejmě narazíš na nekompatibilitu mezi prohlížeči, použij raději onkeydown (či onkeyup).
horakcl
Profil
Díky,
ale mám další problém:

  function Klavesa(kl) {

  alert(kl);
  alert(String.fromCharCode(kl));

  for (Property in kl)
    document.write(Property + "=" + Property.value + " - "); 
    alert (kl);
     if (kl == "," || kl == ".") {
      Carka();
      return;
    }
    if (kl >= "*" &&" kl < "/") {
      Spocti(kl);
      return;
    }
    if (kl >= "0" && kl <= "9") {
      Cislo(ParseInt(kl));
      return;
    }
    return;
  } 
  </script>
  </head>
  
  <body onLoad="Nuluj()"; onKeyDown="Klavesa(event.keyCode)";>

Když zmáčnknu "9" tak 1. alert vrátí 105, druhý "i",
je to snad nějaké jiné číslování ?
Chamurappi
Profil
Reaguji na horakcl:
Protože číslo klávesy (zpravidla) neodpovídá číslu znaku.
Kdybys chtěl číslo znaku, musel bys použít ten onkeypress a pak zkoumat charCode i keyCode, protože různé prohlížeče se chovají různě.

Není mi moc jasné, co by měl dělat zbytek té funkce. (Ta for-in smyčka.)
horakcl
Profil
Zbytek té funkce volá různé funkce pro kalkulačku. Už jsem to upravil tak, že odečtu 48 a funguje to:

function Klavesa(code) {
var k = code - 48;
var kl = String.fromCharCode(k);
if (kl == "," || kl == ".") {
Carka();
return;
}
if (kl >= "*" && kl < "/") {
Spocti(kl);
return;
}
if (kl >= "0" && kl <= "9") {
Cislo(parseInt(kl));
return;
}
return;
}
</script>
</head>

<body onLoad="Nuluj()"; onKeyDown="Klavesa(event.keyCode)";>

Díky za pomoc.
horakcl
Profil
Jo, zapomněl jsem vysvětlit tu for smyčku - to byl pozůstatek ze zkoumání event, která se předávala, už tam není.

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: