Даже не знаю как это описать...
Smiles=[ { id:':),:-)', value:'<img src="~~~">' }, { id:':D,:-D,XD,X-D', value:'<img src="~~~">' }, { id:'~,~~,~~~', value:'<img src="~~~">' } ]; можно ли написать цикл который будет брать из массива первый объект доставать оттуда значение "id" испоьзовать "," как разделитель и заменять совпадения на "value" затем брать второй объект и проделывать тоже самое и т.д. |
function getSmile(smile) { for (var i = 0; i < Smiles.length; i++) if (new RegExp(Smiles[i].id.replace(/,/g, "|").replace(/([()])/g, "\\$1")).test(smile)) return Smiles[i].value; } getSmile(":)"); // <img src='...' /> |
Почти тоже самое )))
<script type="text/javascript"> var Smiles=[ { id:':),:-)', value:'111' }, { id:':D,:-D,XD,X-D', value:'222' }, { id:'~,~~,~~~', value:'333' } ]; var str = " :) ~ XD :)"; function getSmile(b) { for (var c = Smiles.length, a = 0; a < c; a++) var d = Smiles[a].id.replace(/([\$\^\*\(\)\+\[\]\{\}\|\.\/\?\\])/g, "\\$1").split(",").join("|"), b = b.replace(RegExp(d, "gim"), Smiles[a].value); return b }; document.write(getSmile(str)); </script> |
во втором скрипте работает все только при выводе не цифорок а HTML кода вида
<img src="http://~~~.ru/~~_JS/skypeSmiles/emoticon-0100-smile.gif"> он вставляет только половину Smiles/emoticon-0100-smile.gif"> |
z700i, нужно не брезговать и юзать мой код.
P.S. он был немного нерабочим, поправил. |
Matre, я воспользовался вторым скриптом потому что мне нужно сначала взять теуст из <DIV> по ID потом в этом тексте заменить символьные смайлики на картинки и вернуть на место. второй скрипт как раз работает с вытащенной строкой.
|
Часовой пояс GMT +3, время: 02:46. |