Autor Zpráva
polom
Profil *
Zdravím,
mám takovou situaci. Proměnná sourceZkr není nastavena a mám tento kód:

if (!sourceZkr) sourceZkr = obj[targetZkr][0].match(/#.*#.*&(.*)/);


FF mi hlásí, že sourceZkr není nastaveno a zastavuje mi kód. Ale to přece vím, že není nastaveno, potřebuju aby daný kousek kódu se spustil právě když ta proměnná není nastavena, ale tohle to nebere. Ani sourceZkr==null. Ale myslím, že to mám napsané dobře ne?

A ještě se mi objevuje jedna chybová hláška "cannot optimize closure" nebo tak nějak a obvykle to skončí myslím závorce, která uzavírá anonymní funkci. Přitom když vypnu konzoly Firebugu tak kód jede bez chyby, ale jinak když ladím tak se mi stává, že mi Firebug vrací v konzole chybové hlášky. Jako
(1. reload)
Firebug cannot find _firebugConsole element true Window define.php
(2. reload)
Tahle chyba mi teď zrovna nevyskakuje, ale je to něco že je zadán špatný argument pro firebug
(3. reload)
Info:

"Reload to activate window console"
Velda
Profil
polom:
if (typeof sourceZkr =="undefined") sourceZkr = obj[targetZkr][0].match(/#.*#.*&(.*)/);

EDIT: neškodilo by si přečíst Časté potíže, zajímavosti a poučné debaty, které je přišpendlené v tomto tématu... http://diskuse.jakpsatweb.cz/?action=vthread&forum=8&topic=106539#var
Kajman_
Profil *
if (!sourceZkr) var sourceZk
_es
Profil
polom:
Stačí premennú sourceZkr definovať ako skutočnú premennú príkazom var:
var sourceZkr;
Ak to má byť globálna premenná, tak ten príkaz umiestniť v globálnom kóde - mimo funkcií.
Ak stačí lokálna premenná, tak ten príkaz umiestniť do funkcie.
polom
Profil *
Velda:
Ale já to četl už několikrát, hold jsem to zase zapomněl. Ale tuto formuli jsme nikdy nepoužil a vždy mi to jelo, tak teď jsem zaskočen... Díky, ale ani tvoje rada nepomohla!

Kajman:
Přidal jsem var a ted mi vyskočila jedna z těch nesouvisejících hlášek - to je k chybě č. 1 ještě patří hláška "cannost access optimized closure". Takže dávám aktualizovat stránku a tvoje rada taky nepomohla protože opět "sourceZkr není definovaná".

Vaše rady se vztahovali k pravé straně "rovnice" ale kód se zastavuje kvůli tomu, že stroj narazí na první výskyt slova sourceZkr a ten je na levé straně.

_es:
Tak zkouším, ale také nepomáhá! A nejde o globální proměnnou, je to pouze na úrovni anonymní funkce. Tzn. v části před tím je :

    function copyAndReplace(targetZkr)
    {
    var sourceZkr;
    ..
    if (..){
      ..
      sourceZkr = ...;
      }
    ..
    
    if (sourceZkr=="undefined") var sourceZkr = ...


Takže problém je jen v tom, že proměnná nebyla ještě přiřazena... Bude to asi nějaká banalita, ale ještě jsem se s tím nesetkal. Jak říkám, běžně používám if (!prom) ... nebo if (prom==null) a to vždy fungovalo i bez toho, že bych prom předem deklaroval.
polom
Profil *
Oprava:
Tak udělal jsem chybu, že jsem tam dal uvozovky ke slovu undefined. Takže 1) deklarovat předem 2) pom==undefined a už to jede, díky budu si pamatovat
_es
Profil
polom:
Ak je sourceZkr undefined, tak rovnaký efekt ako if (sourceZkr == undefined) má aj if (!sourceZkr).
Ak treba premennú testovať len na undefined, tak treba použiť: if (sourceZkr === undefined).
polom
Profil *
_es:
Vždyď jsem tam měl vykřičník ! Tak problém byl jen v tom, že to nebylo deklarováno předem.

A ještě jeden dotaz:

console.log((obj[targetZkr][0])[0]);
    if ((obj[targetZkr][0])[0]=="&"){ ...


(obj[targetZkr][0]) vrací pole.
((obj[targetZkr][0])[0] - vrací první znak textového řetězce

Kdybych to nedal do kulatých závorek
obj[targetZkr][0][0] tak to vrátí chybu, že obj[targetZkr][0] is undefined. To je taky zajímavé, protože jsem myslel, že to bude chápat automaticky jako odkaz na první znak řetězce. Dělá se to takto nebo moje řešení je nestandardní?
_es
Profil
polom:
((obj[targetZkr][0])[0] - vrací první znak textového řetězce
To nebude fungovať vo všetkých prehliadačoch.
Fungujúci výraz pre prvý znak reťazca s je:
s.charAt(0)
Velda
Profil
polom:
Ale já to četl už několikrát, hold jsem to zase zapomněl. Ale tuto formuli jsme nikdy nepoužil a vždy mi to jelo, tak teď jsem zaskočen... Díky, ale ani tvoje rada nepomohla!
špatně si to použil :)
polom
Profil *
Ještě jsem chtěl napsat o té chybě číslo 2. a čekal sem až nastane:

Firebug's log limit has been reached. 0 entries not shown.		Preferences	 
"Firebug command line does not support '$0'"
"Firebug command line does not support '$1'"
"Firebug command line does not support '$0'"
"Firebug command line does not support '$1'"
"Firebug command line does not support '$0'"
"Firebug command line does not support '$1'"


Tuší někdo co to může být? Asi by to mělo nějak souviset s tou hláškou "cannost access optimized closure"
_es
Profil
polom:
Tuší někdo co to může být?
Na domyslenie chybného kódu k tým hláseniam asi treba nejaké pokročilé jasnovidecké schopnosti.
Nedokážeš pomocou Firebugu zdroj chyby lokalizovať?
Testuješ ten kód aj v iných prehliadačoch?
polom
Profil *
_es:
Testuješ ten kód aj v iných prehliadačoch?
Hm. Ne. Tak to teď udělám, možná na něco přijdu.
polom
Profil *
snažím se opravovat ty svoje chyby co jsem našel v IE ve vývojářských nástrojích, ale mám problém. Jedu z localhostu, ale když dávám aktualizovat prohlížeč F5 a vymazávám mezipaměť prohlížeče, vůbec to nezabírá. Vůbec to nereaguje na změny provedené v tom souboru .js který ladím. Tak jsem se teď zasekl na jendom místě a nejde to ddál. Jak aktualizovat ten načtený soubor? Dokonce když dávám otevřít soubor (stáhnout) tak se mi otveře soubor beze změn...
polom
Profil *
tak to byla asi chyba programu PSPad, že mi neukládal soubor... nechápu

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: