Autor | Zpráva | ||
---|---|---|---|
Monkeys Profil * |
#1 · Zasláno: 28. 10. 2014, 21:47:33
Zdravim
neviete mi niekto prosim vysvetlit preco mi tento riadok v kazdom prehliadaci vypisuje chybu ? text = text.replace(new RegExp(from.charAt(i), "g"), to.charAt(i)); Konkretne chyba Undefined Quantifier. Vdaka M. |
||
_es Profil |
Monkeys:
„Konkretne chyba Undefined Quantifier.“ Možno keby si ešte napísal, aké konkrétne hodnoty majú premenné text , from , i a to ...
|
||
Monkeys Profil * |
#3 · Zasláno: 28. 10. 2014, 22:17:42 · Upravil/a: Monkeys
var from = "ľščťžýáíéäúňôď·/_,:;", to = "lssctzyaieaunod------"; for (var i=0, l=from.length ; i<l ; ++i) { text = text.replace(new RegExp(from.charAt(i), 'g'), to.charAt(i)); } text je retazec z inputu cele je to postavene na evente keyup Problem je asi v BOM-e ked som si vypisal alert(from.length); //34 znakov alert(to.length); //20 znakov |
||
_es Profil |
#4 · Zasláno: 28. 10. 2014, 22:32:16
Monkeys:
„text je retazec z inputu“ Tak bude asi chyba v tom poslednom, čo si ešte neuviedol, lebo to funguje: jsfiddle.net/mqju5uvw. Akú konkrétnu hodnotu má teda premenná text ?
|
||
Monkeys Profil * |
#5 · Zasláno: 28. 10. 2014, 22:41:45 · Upravil/a: Monkeys
_es:
cela funkcia $(function(){ $("input[name='nazovproduktu']").keyup(function(){ var text = $(this).val(); text = text.toLowerCase(); var from = "ľščťžýáíéäúňôď·/_,:;"; var to = "lsctzyaieaunod------"; //alert(from.charAt(0)); for (var i=0; i < from.length; i++) { var text = text.replace(new RegExp(from.charAt(i), 'g'), to.charAt(i)); } text = text.replace(/[^a-z0-9 -]/g, '').replace(/\s+/g, '-').replace(/-+/g, '-'); $("input[name='urlnazovproduktu']").val(text); }); }); Ale problem bude asi v kodovani dokumentu v ktorom mam ten js ulozeny vidim to tak ... M. _es: Problem bol v tom kodovani. Ked som si pozrel zdroj tak su tam taketo cudne znaky var from = "ľšÄťžýáÃéäúňôÄ·/_,:;"; var to = "lsctzyaieaunod------"; teraz to uz funguje ako ma vdaka za reakcie M. |
||
Monkeys Profil * |
#6 · Zasláno: 29. 10. 2014, 14:35:21
Este sa vratim k tomuto prvemu riadku
text = text.replace(new RegExp(from.charAt(i), "g"), to.charAt(i)); zistil som ze IE nepodporuje druhy argument flag, u new RegExp Preto rozmyslam ci sa da neaky sposobom zapisat riadok hore do takehoto zapisu? text = text.replace('/' + from.charAt(i) + '/'g, to.charAt(i)); vdaka M. |
||
Chamurappi Profil |
#7 · Zasláno: 29. 10. 2014, 14:59:26
Reaguji na Monkeyse:
„zistil som ze IE nepodporuje druhy argument flag, u new RegExp“ Jak jsi na to přišel? Je to samozřejmě nesmysl. „ci sa da neaky sposobom zapisat riadok hore do takehoto zapisu“ Ne. Literál regulárního výrazu není řetězec, nejde spojovat. Proč nahrazuješ v několika průchodech? Proč neuděláš jednoduše text.replace(/[^-\w ]/g, function(m) { return to.charAt(from.indexOf(m)) || "" }) ?
|
||
Monkeys Profil * |
#8 · Zasláno: 29. 10. 2014, 17:13:13
Chamurappi:
„Jak jsi na to přišel? Je to samozřejmě nesmysl.“ Na tejto stranke https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp Uplne dolu Browser compatibility Co sa tyka tvojho kodu, viem si napisat co potrebujem mozno je to na viac riadkov a samozrejme tvoje riesenie je krajsie a elegantnejsie no neni som az taky zbehli :) M. |
||
Joker Profil |
Monkeys:
> „Jak jsi na to přišel? Je to samozřejmě nesmysl.“ > > Na tejto stranke > ht>tps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp > > Uplne dolu Browser compatibility To „not supported“ se týká pouze jedné hodnoty druhého parametru, a sice "y" (sticky flag). edit, možná ještě jinak: Ta stránka říká, že IE nepodporuje ve druhém parametru hodnotu "y", ne že nepodporuje druhý parametr jako takový. |
||
Časová prodleva: 17 dní
|
|||
Filipkoss Profil |
#10 · Zasláno: 15. 11. 2014, 18:58:31
Co takhle bez RegExp?
from.split("").forEach(function(i,k){text=text.split(i).join(to[k])}) for(var i=0,j=from.split("");i<j.length;i++)text=text.split(j[i]).join(to[i]) |
||
Časová prodleva: 9 let
|
0