Autor | Zpráva | ||
---|---|---|---|
honzaik Profil |
#1 · Zasláno: 18. 9. 2011, 18:46:37
Č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 |
#2 · Zasláno: 18. 9. 2011, 19:00:19
honzaik:
Potom asi hladas pole. Ak ani to nie, tak uved dovod preco to chces takto riesit. |
||
Witiko Profil |
#3 · Zasláno: 18. 9. 2011, 20:00:19 · Upravil/a: Witiko
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 |
#4 · Zasláno: 18. 9. 2011, 22:36:00
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" var A = ["Angličtina", "angličtina"] x == A |
||
pcmanik Profil |
#5 · Zasláno: 18. 9. 2011, 22:55:42
honzaik:
Mozno ti bude stacit toLowerCase(), tato funkcia vsetky zmeni na male pismena. |
||
Honzaik Profil * |
#6 · Zasláno: 18. 9. 2011, 22:58:41
Dik za tip, ale ja bych spis potreboval jiny řešení, protože pak i bez háčků atd..
|
||
CZechBoY Profil |
#7 · Zasláno: 19. 9. 2011, 08:23:28
tak přepsat všechny háčkovitý písmena na písmena bez diakritiky
|
||
Medvídek Profil |
#8 · Zasláno: 19. 9. 2011, 08:27:53
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 * |
#9 · Zasláno: 19. 9. 2011, 08:35:04
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 |
#10 · Zasláno: 19. 9. 2011, 08:47:26 · Upravil/a: Medvídek
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 |
#11 · Zasláno: 19. 9. 2011, 10:16:31
Pro odstraneni diakritiky v UTF muzes pouzit tento priklad:
http://peter-mlich.wz.cz/web/js/prx/diakritika4.htm |
||
Witiko Profil |
#12 · Zasláno: 19. 9. 2011, 10:39:28 · Upravil/a: Witiko
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 |
#13 · Zasláno: 19. 9. 2011, 16:22:17 · Upravil/a: honzaik
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 |
#14 · Zasláno: 19. 9. 2011, 16:51:07 · Upravil/a: _es
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 |
#15 · Zasláno: 19. 9. 2011, 17:10:47
_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 |
#16 · Zasláno: 19. 9. 2011, 18:46:44 · Upravil/a: honzaik
vyřešil jsem to přes else if.... děkuji všem za ochotu
|
||
honzaik Profil |
#17 · Zasláno: 19. 9. 2011, 19:30:38
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 |
#18 · Zasláno: 19. 9. 2011, 19:41:19
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 |
#19 · Zasláno: 19. 9. 2011, 19:55:37 · Upravil/a: Witiko
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 |
#20 · Zasláno: 19. 9. 2011, 22:47:13
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 |
#21 · Zasláno: 19. 9. 2011, 22:57:34
[#19] Witiko
if(/^(heslo|password)$/.test(prompt("Zadejte heslo:"))) { ... } např. nerozumim zatím tomu k čemu nebo co tam dělá to /^ | || $ .test var .test = prompt("Zadejte heslo:" |
||
Witiko Profil |
#22 · Zasláno: 19. 9. 2011, 23:03:16 · Upravil/a: Witiko
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 RegExp u, 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 |
#23 · Zasláno: 19. 9. 2011, 23:07:30
díky zejtra si to pročtu
|
||
Časová prodleva: 13 let
|
0