如何编写js函数返回innerHTML?

时间:2011-06-03 11:46:06

标签: javascript jquery

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

$.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的位置或方法并返回值吗?

2 个答案:

答案 0 :(得分:3)

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;
}

答案 1 :(得分:2)

jQuery.get("showMsgLive.php?username=" + str + "&servertime=" + servertime + "&usertime=" + usertime + "&lastmsgID=" + lastmsgid, function(newitems){
    newitems = convertTextEmo(newitems);
    api.getContentPane().append(newitems);  
});

您的函数返回修改后的HTML。