Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   помогите НЕумехе найти ошибку (ПЛЫЗ) (https://javascript.ru/forum/dom-window/54922-pomogite-neumekhe-najjti-oshibku-plyz.html)

fasady 06.04.2015 18:29

помогите НЕумехе найти ошибку (ПЛЫЗ)
 
Функция должна находить "код смайлика :-)" в тексте и заменять на его изображение :)

function replaceEmoticons(text) {
  var emoticons = {
    ' :-) ' : 'smail/smaile.png',
    ' :-(  '  : 'smail/sed.png',
    ' :-D '  : 'smail/Lauch.png',
    ' :o '  : 'smail/surprised.png',
    ' ;( '  : 'smail/crying.png',
    ' (giggle) '  : 'smail/giggle.png'
  }, patterns = [],
     metachars = /[[\]{}()*+?.\\|^$\-,&#\s]/g;

 
  for (var i in emoticons) {
    if (emoticons.hasOwnProperty(i)){ // избежать метасимволы
      patterns.push('('+i.replace(metachars, "\\$&")+')');
    }
  }

  
  return text.replace(new RegExp(patterns.join('|'),'g'), 
  function (match) {
    return typeof emoticons[match] !== 'undefined' ?
           '<img src="'+emoticons[match]+'"/>' :
           match;
  });
}
replaceEmoticons(' test :-) ');





что я делаю не так???
Большое спасибо-добрые люди!

рони 06.04.2015 18:58

fasady,
Пожалуйста, отформатируйте свой код!
Для этого его можно заключить в специальные теги: js/css/html и т.п., например:
[js]
... ваш код...
[/js]

О том, как вставить в сообщение исполняемый javascript и html-код, а также о дополнительных возможностях форматирования - читайте http://javascript.ru/formatting.

<script type="text/javascript">
 function replaceEmoticons(text) {
 var emoticons = {
 ' :-) ' : 'smail/smaile.png',
 ' :-( ' : 'smail/sed.png',
 ' :-D ' : 'smail/Lauch.png',
 ' :o ' : 'smail/surprised.png',
 ' ;( ' : 'smail/crying.png',
 ' (giggle) ' : 'smail/giggle.png'
 },metachars = /([[\]{}()*+?.\\|^$\-,&#\s])/g;
 for (var i in emoticons) {
 var reg = new RegExp(i.replace(metachars, '\\$1')  , 'g');
 text = text.replace(reg, ' <img src="'+emoticons[i]+'"/> ')
 }
 return text
 }

 </script>
 <div id="box1">
 <p><script type="text/javascript">alert(replaceEmoticons(' test :-) ')); </script></p>
 </div>

fasady 06.04.2015 19:21

Большое спасибо!!!!! Хорошего вам вечера!!!!!


Часовой пояс GMT +3, время: 17:22.