Javascript 一个表情符号预览仅一次

Javascript 一个表情符号预览仅一次,javascript,jquery,Javascript,Jquery,Textarea无法预览图像,所以我将其背景和颜色设置为透明,并在其后面设置另一个div以预览Textarea的val 现在,当我再次写任何表情文字时,就像:::它只替换第一个。请问我的错在哪里 建议我: 一篇博文中有多少问题可以接受?因为我这里还有更多的问题 变量smileys={ ':': , ':-': , “:D”:, }; 函数smilymsg{ msg=msg.replace/?:\r\n |\r |\n/g; 对于smileys中的var键{ msg=msg.replacekey

Textarea无法预览图像,所以我将其背景和颜色设置为透明,并在其后面设置另一个div以预览Textarea的val

现在,当我再次写任何表情文字时,就像:::它只替换第一个。请问我的错在哪里

建议我: 一篇博文中有多少问题可以接受?因为我这里还有更多的问题

变量smileys={ ':': , ':-': , “:D”:, }; 函数smilymsg{ msg=msg.replace/?:\r\n |\r |\n/g; 对于smileys中的var键{ msg=msg.replacekey,smileys[key]; } 返回味精; } $document.readyfunction{ $.chat>textarea.bindkeyup,函数E{ $.chat>div.htmlsmilyMe$.chat>textarea.val; }; $'maintbox'。在'keyup'上,函数{ $this.css'height','auto'; $this.css'height',Math.maxthis.scrollHeight+'px'; }; $'showhide\u emobox'。单击函数{ $'emobox'.fadeToggle; $this.toggleClass'active'; }; $.embtn.clickfunctionevent{ var prevMsg=$.chat>textarea.val; var emotiText=$event.target.attralt; $.chat>textarea.htmlprevmg+emotiText; }; $‘textarea’。弹性; }; 维护箱{ 位置:相对位置; 边框:2个实心ccc; 最小高度:50px; 宽度:450; 顶部:100px; } 聊天室{ 宽度:100%; } .预览{ 最大宽度:400px; 字体系列:泰晤士报新罗马,泰晤士报,衬线; 字体大小:14px; 颜色:000000; 位置:绝对位置; 顶部:0;左侧:0;z索引:997; } div.chat>text区域{ 字体系列:泰晤士报新罗马,泰晤士报,衬线; 字体大小:14px; 左边距:-2px; 页边顶部:-2px; 边缘底部:2px; 最小高度:50px; 宽度:510px; 调整大小:无; 浮动:左; 位置:绝对;颜色:透明; 顶部:0;左侧:0;z索引:998;背景:透明; } .em{ 位置:相对位置; 保证金:1px2px; 浮动:对; 高度:20px; 宽度:20px; 文本对齐:居中; } .em img{ 页边顶部:1px; 光标:指针; 颜色:白色; 显示:块; 过渡:所有的1容易; } 表情箱{ 背景:fff; 显示:无; 位置:绝对位置; 宽度:200px; 底部:25px; 左:-176像素; 边框:2个实心ccc; 空白:nowrap; } emoboximg{ 浮动:左; 位置:相对位置; 显示:内联块; 保证金:5px 5px; }
replace函数只替换第一次出现的内容,您将需要类似replaceAll的内容

看看这篇文章


您需要使用g来构建正则表达式,以替换所有引用

也必须在密钥中转义

function escapeRegExp(str) {
  return str.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, "\\$&");
}

function smilyMe(msg) {
    msg = msg.replace(/(?:\r\n|\r|\n)/g, '<br />');
    for (var key in smileys) {
        msg = msg.replace(new RegExp(escapeRegExp(key), "g"), smileys[key]);
    }
    return msg;
}

演示:

谢谢您,先生。我的右侧表情图标切换有更多问题。我可以在这里问更多吗?不客气!这个问题已经回答了,我建议你为每个问题创建一个新的帖子。你将得到更多的关注,如果你扩大这个。对于小问题,也更容易得到单独定义的答案,而不是一篇大文章