Diskuze: Nefunguje If
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.

Člen

Zobrazeno 21 zpráv z 21.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.
Ahoj,
nechceš náhodou použít || (nebo) na místo && (a zároveň) ?
Nemyslím si, že se nějaká "hodnota" bude rovnat "13" a zároveň "22"
No já potřebuji, aby se rovnalo obojím, jelikož mám select - option a ty mam podle id a vždycky tam si někdo vybere z každého selectu nějaký option a pak se mu zobrazí obrázek.
A jak se má jeden string ve stejném čase rovnat dvěma různým hodnotám?
No to právě nevím ..
A lze to nějak udělat tak, aby byl výsledek takový, jaký jsem psal výše
?
Veď keď z comboboxu vyberieš nejakú hodnotu tak bude buď 13 ALEBO 22
nie? Či máš taký combobox
kde môžeš vybrať viaceré hodnoty naraz?
Pokud máš box, který ze kterého se vybírá pouze jedna hodnota, pak výstupní hodnota se nemůže rovnat dvou rozdílným hodnotám v jeden čas.
Pokud máš box, ze kterého vybíráš více hodnot, pak se nasypou do pole,
kde jej musíš vybírat z jednotlivých indexů a dále se ptát, ale nevím k
čemu bych to použil
To je přeci nelogické. . . Na víc to píšeš do špatné sekce.
Uvádíš to tak jako kdyby jsi měl modré tričko a tvrdil jsi, že je zároveň i žluté. A to i přes to, že je evidentně modré. Nebo buď mám sklenici vody plnou, nebo prázdnou a nemůže být obojí zároveň současně.
Ale zda potřebuješ, aby se podmínka splnila v obou případech, tak já bych udělal toto:
if(hodnota==="13" || hodnota==="22"){
document.write("<img src='../Documents/wwwfoto/sperky/abc1.JPG' alt='abc1.JPG'>");
}else if(hodnota === "42"){
document.write("<img src='../Documents/wwwfoto/sperky/abc4.JPG' alt='abc4.JPG'>");
}
V opačném případě tvá úvaha je úplně špatně a budeš muset popsat co se snažíš celkově udělat, třeba již pak bude lehčí tě navést.
Pak mě ještě max napadá, že potřebuješ, aby v hodnotě bylo více hodnot, pak bude nutné vytvořit pole, nebo objekt do kterého si budeš hodnoty ukládat.
Když se na to podívám, tak mě napadá, co zkusit toto
if((hodnota==="13") && (hodnota==="22"))
a ty === tam máš proč 3x?
Pokud to má mít stejnou hodnotu, tak tam stačí 2.
Však je to hloupost, jak můžeš mít v jedné proměnné 2 hodnoty současně? To nejde, buď je tam 13 a nebo 22, ale rozhodně ne obojí. 3x rovnítko se porovnává i stejný datový typ, tohle může mít teoreticky správně. Záleží zda v proměnné "hodnota" je string a potřebuje to tímto způsobem kontrolovat.
Jo i to by mohla být blbost. Ale zase na druhou stranu vidíme jen to co
vidíme. Nicméně reaguji mu na to, že mu nefunguje IF. A to by mohlo být
tímto
Každý dotaz by měl být zvlášť ale klidně zahrnutý do jedné podmínky.
Od toho je tam && aby vědělo co a dál
Ano, vidíme to, že jste úplně mimo oba dva :/ Tohle je tak triviální, že se to nedá ani jinak vysvětlit a to buď člověk chápe a nebo nechápe.
IF mu funguje zcela správně. To že tam má podmínku, která nemůže nikdy nastat je věc druhá. Pokud to dobře chápu, potřebuje z formuláře dostat dvě proměnné, ID kategorie a ID podkategorie a pak mu to bude fungovat.
Z kvantového hlediska to sice možná možné je („Schrödingerův string”), ale v programování má proměnná vyhrazené místo v paměti a to místo může mít jen jednu hodnotu.
Pošli sem celý kód, takhle vůbec není poznat, čeho vlastně chceš dosáhnout.
Videl jsem kod v js, kdy promenna muze nabyvat vice hodnot. Tusim se pres prototype prepisovala vlastnost objektu read. Nevim uz, ale, kde to bylo.
Ha, podarilo se mi dokonce najit navod, jak to udelat, aby promenna menila
hodnotu.
Obecne to jde. Samozrejme to povazuji za nevyuzitelne. Mozna tak pri propojovani
objektu.
// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/defineProperty
<script>
var o,x;
o = {};
x = 1;
Object.defineProperty(o, 'y', {
get() { x++; return x; },
});
alert([o.y, o.y, o.y==4, o.y==5, o.y==6 && o.y==7]) // vypise 2, 3, true, true, true
</script>
Já to chápu takto
Já to beru z několik selectů
nejspíš to chtěl takto:
hodnota = sady.options[sady.selectedIndex].value;
hodnota2 = sady2.options[sady2.selectedIndex].value;
if(hodnota==="13" && hodnota2==="22"){ document.write("<img src='../Documents/wwwfoto/sperky/abc1.JPG' alt='abc1.JPG'>");}
if(hodnota==="42"){ document.write("<img src='../Documents/wwwfoto/sperky/abc4.JPG' alt='abc4.JPG'>");}
}
píše že to vybírá z několika selectboxů ale hodnotu bere jen z jednoho.
Předchozí příspěvek ignorujte!
Píšeš, že tam máš víc selectboxů, hodnoty ale vybíráš jen z
jednoho.
hodnota = sady.options[sady.selectedIndex].value;
jestli jich tam máš víc, podle kterých vybíráš obrázek, musíš tam mít i ten druhej selectbox
// nějaká tvoje sada šperků
hodnota = sady.options[sady.selectedIndex].value;
// tohle je ten drtuhý selectbox
hodnota2 = sady2.options[sady2.selectedIndex].value;
potom ti ten if bude fungovat s upravou
if(hodnota==="13" && hodnota2==="22")
{}
PS: dej si pozor na to porovnávání datového typu. Jestli se ti v hodnotě nebo v hodnotě2 objeví int místo stringu tak ti to fungovat nebude.
Zobrazeno 21 zpráv z 21.