Autor Zpráva
honzaik
Profil
Čau, když chci aby proměná "x" měla více hodnot, chtěl jsem to udělat takhle, ale nefunguje to
var x = "a" || "b" || "c"

to "||" je tam jako že to může bejt jedna z nich, chtěl jsem taky udělat, že proměnná "a" = "b"
a == b

to taky nefunfunguje, potřebovat bych radu, jak udělat aby jedna proměnná měla více zadání, díky za odpověď
pcmanik
Profil
honzaik:
Potom asi hladas pole. Ak ani to nie, tak uved dovod preco to chces takto riesit.
Witiko
Profil
honzaik:
== není přiřazení, ale slabé porovnání. Pro uchovávání více hodnot se používá pole:
var a = [1, 2, 3];
alert(a[0]); // 1
alert(a[1]); // 2
alert(a[2]); // 3

|| je logické nebo, tzn. var x = "a" || "b" || "c" skončí přiřazením "a" do dané proměnné, jelikož Boolean("a") === true - daný výraz je tedy pravdivý a navrátí "a". "a" && "b" && "c" by navrátilo naopak "c", protože pro pravdivost takového výrazu musí být všechny hodnoty po převodu na boolean pravdivé.
honzaik
Profil
já chci aby odpověď na otázku byla např: "Angličtina" ale někdo může napsat "angličtina" takže bych potřeboval jak více proměnnejch sloučit do jedný aby to bylo jednodušší třeba jako odpověď "A"
var A = "Angličtina" "angličtina"
chápete? pole nefunguje jako že bych udělal
var A = ["Angličtina", "angličtina"]
a pak do podmínky
x == A
pcmanik
Profil
honzaik:
Mozno ti bude stacit toLowerCase(), tato funkcia vsetky zmeni na male pismena.
Honzaik
Profil *
Dik za tip, ale ja bych spis potreboval jiny řešení, protože pak i bez háčků atd..
CZechBoY
Profil
tak přepsat všechny háčkovitý písmena na písmena bez diakritiky
Medvídek
Profil
Honzaik:
Dik za tip, ale ja bych spis potreboval jiny řešení, protože pak i bez háčků atd..
Můžete si upravit funkci od Jakuba Vrány:

<script type="text/javascript">
var nodiac = { 'á': 'a', 'č': 'c', 'ď': 'd', 'é': 'e', 'ě': 'e', 'í': 'i', 'ň': 'n', 'ó': 'o', 'ř': 'r', 'š': 's', 'ť': 't', 'ú': 'u', 'ů': 'u', 'ý': 'y', 'ž': 'z' };
/** Vytvoření přátelského URL
* @param string řetězec, ze kterého se má vytvořit URL
* @return string řetězec obsahující pouze čísla, znaky bez diakritiky, podtržítko a pomlčku
* @copyright Jakub Vrána, http://php.vrana.cz/
*/
function make_url(s) {
    s = s.toLowerCase();
    var s2 = '';
    for (var i=0; i < s.length; i++) {
        s2 += (typeof nodiac[s.charAt(i)] != 'undefined' ? nodiac[s.charAt(i)] : s.charAt(i));
    }
    return s2.replace(/[^a-z0-9_]+/g, '-').replace(/^-|-$/g, '');
}
</script>
Honzaik
Profil *
A teda nějak jednodušše by ta proměnná zapsat nešla? Prostě jestli někdo neznate ten zapis, žadny přeformatovavani textu se mi dělat nechce...
Medvídek
Profil
Honzaik:
Jedině pole, jak píší pcmanik, Witiko. Pak musíš porovnávat, jestli je hodnota v poli.

function in_array(needle, haystack) {
    for(var i in haystack) {
        if(haystack[i] == needle) return true;
    }
    return false;
}

peta
Profil
Pro odstraneni diakritiky v UTF muzes pouzit tento priklad:
http://peter-mlich.wz.cz/web/js/prx/diakritika4.htm
Witiko
Profil
Medvídek:
Nebezpečné, pokud na poli či jeho prototypu jsou nenativní rozšíření:
Array.prototype.x = "y";
in_array("y", []); // true

Navrhoval bych využít nativní Array.prototype.indexOf funkce:
if(!(Array.prototype.indexOf instanceof Function))
  Array.prototype.indexOf = function(needle, from) {
    if(this === undefined || this === null) throw new TypeError;
    for(var i = !from || from < 0?0:from,
            l = this.length; i !== l; i++)
      if(this[i] === needle) return i; return -1;
  };

Array.prototype.obsahuje = function(needle) {
  return this.indexOf(needle) !== -1;
};

var a = ["Jeden text", "druhý text"];
a.obsahuje("druhý text"); // true
a.obsahuje("třetí text"); // false

Honzaik:
Neřekl jsi nám, o co se snažíš, ale mám takový pocit, že zbytečně složitě děláš něco, co by se dalo snadno vyřešit pomocí regulárních výrazů. Nějak takhle:
var výraz = /angli(č|c)tina/i;
    výraz.test("Angličtina"); // true
    výraz.test("ANGLICTINA"); // true
    výraz.test("AnGlIčTiNa"); // true

Mimochodem ještě mě napadlo - ve stylu tvého vysněného zápisu z [#1] by sis mohl vytvořit funkci reprezentující daný výraz, tzn.:
testujeme("a"); // true
testujeme("d"); // false

function testujeme(x) {
  return x === "a" ||
         x === "b" ||
         x === "c";
}
honzaik
Profil
já mám prostě script
function gate()
{
var a = "heslo"
      
    text = "welcome";
    x = prompt("Zadej heslo.");
if (x == a)
{
document.write(text)
}
else document.write("WRONG ANSWER");
}

chápete? a já chci aby proměnná "a" měla více tvarů (slov) jako, že by odpověď nebyla jen "heslo" ale treba i "password".
Chtěl bych to hodně jednoduchý, protože v JS jsem uplný začátečník, a více než polovina kódů které jste mi doporučili nechápu, tak proto.
_es
Profil
honzaik:
chci aby proměnná "a" měla více tvarů (slov) jako, že by odpověď nebyla jen "heslo" ale treba i "password".
To je nezmysel.

více než polovina kódů které jste mi doporučili nechápu
Tak to je nutné si niečo z JS naštudovať, aby si ich pochopil.

Podľa [#6] hľadáš asi skript z [#8] Medvídek - pokúsil si sa ho aspoň spustiť?
honzaik
Profil
_es:
tak se právě ptám, podle #6 mám na mysli, že bych potřeboval tu proměnnou "mnohonásobně" zapsat...
honzaik
Profil
vyřešil jsem to přes else if.... děkuji všem za ochotu
honzaik
Profil
ještě bych rád věděl, jak obejít to, že při scriptu
window.open('main.html', 'target=_blank', 'width=1200px, height=600px')

prohlížeč zablokuje vyskakovací okno, jde nějak udělat, aby okno normálně vyskočilo, bez povolování zabl. oken?
o_O
Profil
honzaik:
Představte si pak ten smysl zakazování vyskakovacích oken v případě, že by se to dalo jakkoliv obejít.
Witiko
Profil
honzaik:
Ten druhý argument window.open v [#17] ('target=_blank') je nesmysl - tam má přijít jméno daného okna. Jinak jeden problém, jedno vlákno.

var a = "heslo"
text = "welcome";

Za to "heslo" přijde čárka. Jdou dvě možnosti definice více proměnných:
var a; var b; var c = 1; a var a, b, c = 1;
[#13] Ti vlastně funguje jen díky tomu, že javascript bere konec řádku jako středník. Proměnná a na dalším řádku je pak globální a nedeklarovaná.

a více než polovina kódů které jste mi doporučili nechápu
Co konkrétně nechápeš?

vyřešil jsem to přes else if.... děkuji všem za ochotu
V mnou navrhovaných příkladech Ti klidně stačí jeden řádek:
Regulární výraz: if(/^(heslo|password)$/.test(prompt("Zadejte heslo:"))) { ... }
Pole: if(["heslo", "password"].indexOf(prompt("Zadejte heslo:")) !== -1) { ... }
Případně už switch, který funguje podobně jako elseif konstrukce, ale je kratší:
switch(prompt("Zadejte heslo:")) {
  case "heslo":
  case "password":
    ...
}
_es
Profil
honzaik:
jde nějak udělat, aby okno normálně vyskočilo, bez povolování zabl. oken?
Spraviť to tak, aby bolo treba na to otvorenie okna na niečo kliknúť, teda dať ten príkaz napríklad do ovládača udalosti onclick.
honzaik
Profil
[#19] Witiko
if(/^(heslo|password)$/.test(prompt("Zadejte heslo:"))) { ... }

např. nerozumim zatím tomu k čemu nebo co tam dělá to
/^
a
|
je to samý jako
||
? dále
$
je v JS na co?
.test
je jako
var .test = prompt("Zadejte heslo:" 
? Fakt jsem v tom začátečník tak se nediv těchto stupidních dotazů...
Witiko
Profil
honzaik:
Všechno mezi těmi lomítky je regulární výraz. /^(heslo|password)$/ je to samé jako new RegExp("/^(heslo|password)$/");. test(řetězec) je pak funkce dostupná každému RegExpu, která jej porovná vůči řetězci a navrátí true nebo false podle toho, jestli zde existuje shoda. Pro pochopení, co to dělá a jak to funguje, si stačí přečíst libovolný článek pojednávající o práci s regulárními výrazy v javascriptu (a libovolném jiném jazyku, který přebírá syntax od perlu). Např.: interval.cz » Regulární výrazy a JavaScript - úvod

Tedy if(/^(heslo|password)$/.test(prompt("Zadejte heslo:"))) { ... } znamená:
Pokud existuje shoda mezi regulárním výrazem /^(heslo|password)$/ a řetězcem navráceným voláním prompt("Zadejte heslo:"), dojde k provedení bloku { ... }. A ke shodě dojde právě pokud se bude řetězec rovnat "heslo" nebo "password".
honzaik
Profil
díky zejtra si to pročtu

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