Autor Zpráva
Honza_n
Profil *
Ahoj,
script který mi funguje v FF a OP mi nefunguje v IE. Nástroj pro ladění mi v konzole píše:

Objekt tuto vlastnost nebo metodu nepodporuje. jquery-1.4.2.min.js, řádek 74 znak 407

ř. 74, znaku 407 předchází toto
{for(var H in n.filter)


a od znaku 407 následuje toto:
if((t=n.leftMatch[H].exec(g))!=null&&t[2])


Je to chyba v Jquery nebo špatné používám Jquery?
Ještě následuje chyba v mém scriptu:
dr=$("select[name=druh]","fieldset#gramar");
Chamurappi
Profil
Reaguji na Honzu_n:
Čísla řádků v chybových hláškách Exploreru jsou zpravidla o jeden řádek posunutá. Ale na tom asi nezáleží, z jednoho řádku kódu stejně nikdo neuhodne problém. Bez odkazu na živou ukázku nemá smysl nad tím přemýšlet.
Honza_n
Profil *
Trvalo mi to přes hodinu, ale tady to je:
Ukázka kódu 1
Honza_n
Profil *
No a když už jsem v tom nahrávání tak jsem tam nahrál ještě jeden script který mi také nejede v IE. Je to indikátor délky textu - bez obrázků ale nefunkční*, ale jde o to odstranit chybu v JS. Nelekni se prosím hrozivě vypadajícího pokusu s funkcí bind. Byl to jen takový pokus s JQuery.

Ukázka kódu 2

* - a nedodělaný, zatím nemám vymyšleno jak zastavit uživatele aby pokračoval ve psaní.
Chamurappi
Profil
Reaguji na Honzu_n:
Ukázka kódu 2
Vyhoď tuhle čuňárnu:
Object.prototype.NextSibling = function ()
{ 
    var e = this.nextSibling;
  while ( e.tagName == "undefined") e = e.nextSibling;
  return e;
}
V Exploreru nedědí elementy (ani jiné části DOMu) od Objectu, proto ti to nefunguje.

Je to chyba v Jquery nebo špatné používám Jquery?
Řekl bych, že špatně používáš JavaScript. Ono jQuery moc nepočítá s tím, že narazí na tvé funkce NextSibling, PreviousSibling a attrCount kdykoliv prochází jakýkoliv (třeba svůj) objekt smyčkou for..in. Zapiš si za uši: Na Object.prototype nesahat!

Celý ten tvůj skript mi připadá poněkud zmatený. Jako by sis vzal z každé historické epochy skriptování na webu typické neduhy a smíchal je dohromady.
Honza_n
Profil *
Takže ten prototyp jak jsem ho použil tady nemohu prakticky vůbec kvůli IE použít...

Tak tenhle prototyp mám taky vymazat?

Array.prototype.inArray = function (value) {
  var i;
  for (i=0; i < this.length; i++) if (this[i] === value) return true;
return false;
};


A mám tedy napsat normální funkci na to jo? S použitím např. inArray(arr, key);?

Ta funkce NextSimbling je z toho druhého skriptu. Hledal jsem na netu jak zpřístupnit vedlejší element. Tam jsem se dočetl, že Mozilla Firefox vidí mezi dvěma tagy mezeru white space \n
<p>
<p>

a ten znak považuje za následující element. Tudíž toto jsem bral jako řešení. Jestliže ale toto nebere IE, pak jak vyřešit tento problém v kódu 2.? Mám to tedy udělat bez prototypu a s pomocí funkce, jo?

Problém je v tom, že při tom hledání na internetu mohu narazit na staré články s nespolehlivými informacemi.
Honza_n
Profil *
Už jsem si to našel na internetu:
http://arstechnica.com/civis/viewtopic.php?f=20&t=185317
A tam se píše že lze použít framework "Prototyp". Vlastně bych mohl použít i Jquery, ale zas je otázka zda je to nutné. Už vím kde jsem udělal chybu. V původním návodu nebyl použit prototyp, ale obyčejná funkce. Možná by jsi tu informaci mohl přidat do diskuse "Časté potíže, zajímavosti a poučné debaty".
Honza_n
Profil *
Honza_n:
kdykoliv prochází jakýkoliv (třeba svůj) objekt smyčkou for..in. Zapiš si za uši: Na Object.prototype nesahat!
A to se týká pouze této smyčky nebo ještě nějakých jiných smyček?

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:

Odkud se sem odkazuje


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: