Javascript 如何编写js函数返回innerHTML?

Javascript 如何编写js函数返回innerHTML?,javascript,jquery,Javascript,Jquery,我正在尝试将表情符号代码转换为表情符号图像。我想把它写在一个函数中。以下是没有函数的原始代码: $.get("showMsgLive.php?username=" + str + "&servertime=" + servertime + "&usertime=" + usertime + "&lastmsgID=" + lastmsgid, function(newitems){ newitems = newitems.replace(/\(smile1\)/g

我正在尝试将表情符号代码转换为表情符号图像。我想把它写在一个函数中。以下是没有函数的原始代码:

$.get("showMsgLive.php?username=" + str + "&servertime=" + servertime + "&usertime=" + usertime + "&lastmsgID=" + lastmsgid, function(newitems){
    newitems = newitems.replace(/\(smile1\)/g, '<img src="images/emoticons/emobasic/smile1.gif" class="emoticon"/>')
    .replace(/\(rabbit18\)/g, '<img src="images/emoticons/emospecial/rabbit18.gif" class="emoticon"/>')
    .replace(/\(rabbit19\)/g, '<img src="images/emoticons/emobasic/rabbit19.gif" class="emoticon"/>')
    .replace(/\(rabbit20\)/g, '<img src="images/emoticons/emoadvance/rabbit20.gif" class="emoticon"/>')
    .replace(/\(sheep4\)/g, '<img src="images/emoticons/emospecial/sheep4.gif" class="emoticon"/>'); //end of special emo
    newitems.innerHTML = newitems;
    api.getContentPane().append(newitems);
}); 
下面是我尝试在函数中编写的代码:

function convertTextEmo(newitems){
    newitems = newitems.replace(/\(smile1\)/g, '<img src="images/emoticons/emobasic/smile1.gif" class="emoticon"/>')
    .replace(/\(rabbit19\)/g, '<img src="images/emoticons/emospecial/rabbit19.gif" class="emoticon"/>')
    .replace(/\(rabbit20\)/g, '<img src="images/emoticons/emobasic/rabbit20.gif" class="emoticon"/>')
    .replace(/\(sheep4\)/g, '<img src="images/emoticons/emoadvance/sheep4.gif" class="emoticon"/>'); //end of special emo
    return newitems;    
}

jQuery.get("showMsgLive.php?username=" + str + "&servertime=" + servertime + "&usertime=" + usertime + "&lastmsgID=" + lastmsgid, function(newitems){
    convertTextEmo(newitems);
    api.getContentPane().append(newitems);  
}); 
我没有将innerHTML放在函数中,因为我不知道放在哪里以及如何放,并且输出没有成功地将代码转换为图像。我是否可以知道将innerHTML放在函数中的什么位置或如何将其返回值?

newitems.innerHTML=newitems;甚至不应该工作,因为newitems是字符串而不是HTML元素

我想你所要做的就是:

api.getContentPane().append(convertTextEmo(newitems));
改进代码的另一个技巧:由于的图像名称与文本中的标识符相同,您可以创建一个名称数组:

var emoticons = ['smile1', 'rabbit18',...];
并在其上循环:

function convertTextEmo(newitems, icons){
    var pattern, content;
    for(var i = icons.length; i--; ) {
        pattern = new RegExp('\(' + icons[i] + '\)', 'g');
        content = '<img src="images/emoticons/emospecial/' + icons[i] + '.gif" class="emoticon"/>';
        newitems = newitems.replace(pattern, content);
    }
    return newitems;
}

函数返回修改后的HTML

太好了。它起作用了。你很聪明,非常感谢:我真的不明白你的建议。图标应该具有什么值?图标是否具有表情符号的价值?如果是这样,如何将表情符号的值传递到图标中?您可以使表情符号成为全局的,只需调用api.getContentPane.AppendConvertTextEmonNewItems,emoticons;我只是想提供一个通用功能。如果它是全局的,你也可以直接从converTextEmo内部访问表情符号。我明白了。我已经明白了。实际上有3组表情符号,3类表情符号图像保存在3个不同的文件夹中-emosecial、emopadvance、emobasic。关于您的提示,是否可以检查表情符号是否来自哪个文件夹?我已经更新了我的问题,向您展示了3种不同的文件夹代码。@zac:有各种可能性。例如,不只是保存名称,您可以存储一个数组,其中第二个元素是文件夹名称,例如['smile1','folder1'],['rabbit','folder2'],…]。或者您可以创建一个对象数组:[{name:'smile1',folder:'folder1'],{name:'rabbit',folder2'},…]或者您可以创建一个映射{'rabbit':'folder1','smile':'folder2'}。。。
jQuery.get("showMsgLive.php?username=" + str + "&servertime=" + servertime + "&usertime=" + usertime + "&lastmsgID=" + lastmsgid, function(newitems){
    newitems = convertTextEmo(newitems);
    api.getContentPane().append(newitems);  
});