Autor | Zpráva | ||
---|---|---|---|
sloncz Profil |
#1 · Zasláno: 22. 1. 2015, 14:29:31
Hezký den, sepsal jsem si scritp na kontrolu obsahu zadaného divu a podle toho se provede akce, ovšem má to jeden háček.
Náhodně se zobrazuje <div class="okol"><img src='img1'></div> nebo <div class="okol"><img src='img2'></div> a script potom vypadá takto: .... var okol = $(this).html(); if(okol = "<img src='img1'>"){ alert("tip 1"); } else { alert("tip 2"); } ... |
||
xROAL Profil |
if(okol == "<img src='img1'>"){ V if si teda do premennej okol vložil hodnotu <img src='img1'> a podmienka prešla ako true .
Odporúčam používať nejaké IDE (osobne som veľmi spokojný s NetBeans) ktoré ťa na takéto veci upozorní hneď ako ich napíšeš. |
||
sloncz Profil |
#3 · Zasláno: 22. 1. 2015, 14:46:35
Oh, ano, děkuji.
Upravil jsem to sice na dvě == ale i když se zobrazí <div class="okol"><img src='img2'></div> tak se vykoná podmínka a vypíše to alert("tip 1"); |
||
Trejpa Profil |
#4 · Zasláno: 22. 1. 2015, 14:53:03
sloncz:
A není součástí $(this).html() náhodou víc obsahu, než jen přesně <img src='img1'> ? Možná bys měl porovnávat výskyt a ne přesnou shodu.
|
||
sloncz Profil |
obsah to má
<div class=\"okol\" style=\"top: 0px; left: " + left + "px;\"><img style='margin:0 auto auto;height:35px;width:35px;' src='obr1.png'></div> var okol = $(this).html(); if(okol == "<img style='margin:0 auto auto;height:35px;width:35px;' src='obr1.png'>"){ } else { } |
||
Trejpa Profil |
#6 · Zasláno: 22. 1. 2015, 15:17:18
sloncz:
Tak to děláš špatně. |
||
sloncz Profil |
#7 · Zasláno: 22. 1. 2015, 15:20:30
Co přesně myslíte tím, že to dělám špatně? Takhle by to fungovat mělo ne? Vytáhne to obsah divu s class="okol" a obsah porovná s řetězncem, co je v podmínce, pokud se nepletu
|
||
juriad Profil |
sloncz:
Jsi si jistý každým znakem, včetně mezer (které můžou být opakované)? Proč ne raději: if($(this).find('img').attr('src') == 'obr1.png') {...} |
||
sloncz Profil |
#9 · Zasláno: 22. 1. 2015, 15:35:07
juriad:
Je možné, že někde vzniká mezera navíc a proto to potom špatně porovnává, to ale nevím jak poznat, protože když se na to koukám, tak tam žádnou mezeru navíc nevidím. Použil jsem podmínku, kterou jste mi sem zaslal a vypadá to, že to funguje, takže vyřešeno. Děkuji :) |
||
Chamurappi Profil |
#10 · Zasláno: 22. 1. 2015, 15:40:16
Reaguji na sloncza:
Při čtení z vlastnosti innerHTML prohlížeč přeloží existující DOM do HTML podoby. Přesná podoba závisí na prohlížeči a nikdy se na ni nedá spoléhat. Rozhodně v ní nebudou stejné mezery a stejné formátování jako v původním HTML, protože tyto nepodstatné informace se při převodu HTML na DOM zahazují.
|
||
sloncz Profil |
#11 · Zasláno: 22. 1. 2015, 15:53:17
Chamurappi:
To jsem nevěděl, děkuji za vysvětlení. ----- Každopádně, co se týká toho mého problém, juriadub způsob funguje, ale přece jen se občas stane (1 z 4) že se podmínka vykoná chybně. |
||
juriad Profil |
Chamurappi:
Už jsem se setkal s tím, že v jednom prohlížeči (myslím nějaké IE) byly mezery zachovány. Konkrétně problém byl v tom, že jsme kontrolovali obsah spanu, který obsahoval pár slov oddělených mezerou a pokud byly oddělené dvěma mezerami, zůstaly obě zachované ve vlastnosti innerHTML, na rozdíl od ostatních prohlížečů, kde se splácly do jedné. Také tam byly nějaké problémy s mezerami na začátcích a koncích. sloncz: Tak teď zjisti, v jakém případě to nefunguje. |
||
Trejpa Profil |
#13 · Zasláno: 22. 1. 2015, 16:10:31
Nejen proto bych se vyhnul porovnávání celého HTML řetězce a použil vyhledání unikátního podřetězce, zadaného raději bez mezer.
ukázka |
||
Časová prodleva: 9 let
|
0