遇到 str.replace 仅适用于数组的最后一个元素的问题 这是数组:
["omao","卡尔顿","评判"]
这是我的 javascript 函数
function emoji(data){
//console.log(data);
$(".message-content").each(function(){
var elem = $(this);
var str = elem.html();
//var res = str.replace(":hey", '<img draggable="false" class="emoji jumboable" alt="emoji" src="https://discordchat.com/api/omao.png">');
for(var i = 0;i < data.length; i++){
var res = str.replace(":"+data[i], '<img draggable="false" title="Added using the WLA Poor Mans Nitro" class="emoji jumboable" alt="emoji" src="https://discordchat.com/api/'+data[i]+'.png" />');
elem.html(res);
}
});
}
当您运行它时,只有 :judging
被图像替换,:omao
和 :carlton
被忽略。我已经尝试了我能找到的所有“解决方案”,但都遇到了同样的问题。
最佳答案
您遇到的问题是您正在对原始字符串而不是已更改的字符串重复替换,这就是为什么只有最后一次迭代才是被设置的原因
你可以像这样改变它
var str = elem.html();
for(var i = 0;i < data.length; i++){
str = str.replace(":"+data[i], '<img draggable="false" title="Added using the WLA Poor Mans Nitro" class="emoji jumboable" alt="emoji" src="https://discordchat.com/api/'+data[i]+'.png" />');
}
// and set it only once
elem.html(res);
关于Javascript仅解析数组的最后一个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46718858/