Javascript仅解析数组的最后一个元素

标签 javascript

遇到 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/

相关文章:

Javascript奇怪的比较结果

javascript - AJAX 请求错误,尽管数据已成功更新。 "Unexpected Token <"

javascript - 使用 javascript/jquery 屏蔽现有输入值?

javascript - highchars-Angular 不渲染图表

javascript - 检查 RSS 源中的 HTML 标记并删除

javascript - 向下滚动到 div,同时隐藏第一个 div,使页面向下跳转

javascript - 元素替换后的 JQuery 对象引用

javascript - Return/Enter 时取消选择输入框

javascript - jQuery 移动库 - 错误的滑动​​检测

javascript - Google Chrome 扩展程序自动更新