Autor Zpráva
kalina
Profil
Dobrý den,
prosím o radu, co kde dělám špatně. Učím se javascript a nejsem schopná správně nastavit podmínku, aby se při nerovnosti hodnot skrylo textové okno formuláře (nebo se třeba alespoň změnila jeho barva, či barva textu). Zkoušela jsme podmíněně stylovat také div (pokud to stejné dělám jinde bez použití formuláře, funguje mi to) tady bohužel nic. Přikládám odkaz na živou ukázku: www.1a2b.cz/soucet_srovnani.html

function Srovnani1() {
    var a=parseInt(document.formular1.vysledek_1.value);
    var b=parseInt(document.formular1.vysledek_2.value);
    document.formular1.vysledek_3.value=a==b;
    if (vysledek_3 == true){
     formular1.vysledek_3.style.display='';
     }
     else
     formular1.vysledek_3.style.display='none'
     }

předem děkuji
J. Kalinová
_es
Profil
kalina:
if (vysledek_3 == true){
Premennú vysledek_3, a aj iné podobné premenné, nemáš nikde definovanú.
peta
Profil
v  = a==b;
document.formular1.vysledek_3.value = v;
if (v == true)

A mozna bych to psal uplne jinak...

function Srovnani1() {
    var a,b,f;
    f = document.formular1;
    a = parseInt(f.vysledek_1.value);
    b = parseInt(f.vysledek_2.value);
    f.vysledek_3.value = a==b;
    f.vysledek_3.style.display = a==b ? '' : 'none';
     }
kalina
Profil
_es a peta: děkuji moc za rady, podařilo se.
Protože jsem však sloučila dvě mat. funkce do jednoho tlačítka (sčítání a porovnávání dvou hodnot) zřejmě logicky se obojí provede až na dvouklik a nikoliv na první kliknutí (nejdříve vypočítá a+b, potom porovná x==y). Možná jsem naivní, ale není možné, aby obě funkce proběhly hned na první kliknutí? viz živá ukázka a kód:
          function Soucet01() {
    var a,b,x,z,f;
    f = document.formular01;
    a = parseInt(document.formular01.cislo_1.value);
    b = parseInt(document.formular01.cislo_2.value);
    x = parseInt(document.formular01.vysledek_1.value);
    y = parseInt(document.formular01.vysledek_2.value);
    f.vysledek_2.value=a+b; 
    f.vysledek_2.style.color='white';
    f.vysledek_2.style.background ='green';
    f.cislo_1.style.color='white';
    f.cislo_1.style.background ='green';
    f.cislo_2.style.color='white';
    f.cislo_2.style.background ='green'
    if ( x==y ){ 
     f.vysledek_3.value='počítal jsi správně' ;
     f.vysledek_3.style.background='yellow';
     f.vysledek_1.style.color='white';
     f.vysledek_1.style.background ='green';
       }
    if ( x<y ){ 
     f.vysledek_3.value='chyba, správný výsledek musí být větší. Klikni a počítej znovu' ;
     f.vysledek_3.style.background='red';
     f.vysledek_1.style.color='white';
     f.vysledek_1.style.background ='red';
 }
    if ( x>y ){ 
     f.vysledek_3.value='chyba, správný výsledek musí být menší. Klikni a zkus to znovu' ;
     f.vysledek_3.style.background='blue';
     f.vysledek_1.style.color='white';
     f.vysledek_1.style.background ='blue'

     }}

Předem děkuji
J. Kalinová
pako
Profil *
skus sa zamerat na premennu y a jej hodnotu ked kliknes prvykrat.
kalina
Profil
pako: děkuji, myslíš funkci eval? zkoušela jsem ji, ale zatím mi to vůbec nefunguje.
pako
Profil *
nie, myslel som to, ze v nej po prvom spusteni funkcie mas NaN, pretoze sa snazis previest na cislo v tej chvili este prazdny retazec z input vysledek_2 na riadku 7, hodnotu mu davas az na riadku 8, preto to porovna az na druhy raz, ked uz ma premenna y ciselnu hodnotu. uplne polopate, prehod si riadok 7 a 8 a malo by to ist na jeden klik
kalina
Profil
Nádhera, já jsem naprosto šťastná, funguje to na první klik. viz: živ.uk. (NaN se mi tam sice, bez zadání hodnot, ukazuje i teď, ale to je snad normální, když nemá chudák co počítat a přitom se po něm požaduje výsledek.) Jinak ale opravdu moc děkuji a jsem (doufám) poučená i pro příště.

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:

0