Javascript 替换不影响所有数组元素

标签 javascript jquery arrays

下面的代码应该用一个跨度替换所有数组值,并将其格式化为不同的颜色。不幸的是,这仅适用于第五个数组值,不适用于任何其他数组值。我不确定错误在哪里。代码和 fiddle 如下:

var names = ["JakeP97", "Trishy", "Puffs", "Evilgenious", "Joeyc", "TheKid"];
var namecolours = ["red", "pink", "yellow", "white", "green", "blue"];

var tribechat = document.getElementsByClassName('tribeconvo');
for (var i = 0; i < tribechat.length; i++) {
  colourallocate(names[i], namecolours[i]);
}

function colourallocate(chatname, chatcolour) {
  var s = tribechat[i].innerHTML;
  s = s.replace(chatname, '<span style="color:' + chatcolour + '">' + chatname + '</span>');
  tribechat[i].innerHTML = s;
}
<div class="tribeconvo">Joeyc: hey everyone</div>
<div class="tribeconvo">JakeP97: hello joey</div>
<div class="tribeconvo">Joeyc: oi m8, whats up</div>
<div class="tribeconvo">TheKid: LOL hey JakeP</div>
<div class="tribeconvo">Joeyc: RIP</div>

最佳答案

您的代码无法正常工作,因为您的名称顺序与 html 元素的顺序不匹配。您不能使用您的名称作为键,因为您的数组也不是唯一的。我建议使用此解决方案,以便根据索引将名称与颜色配对。

var names =       ["Joeyc", "JakeP97", "TheKid"];
var namecolours = ["green", "pink", "blue"];
	
		
	var tribechat = document.getElementsByClassName('tribeconvo');
	for(var i = 0; i < tribechat.length; i++)
	{
		colourallocate(tribechat[i]);
	}
	
	function colourallocate(tribechatParameter) {
    var currentName = tribechatParameter.childNodes[0].innerText; // Finds the span
    var propperIndex = names.indexOf(currentName);
		var s = tribechatParameter.innerHTML;
		s = s.replace(currentName, '<span style="color:' + namecolours[propperIndex] + '">' + currentName + '</span>');
		tribechatParameter.innerHTML = s;
	}
<div class="tribeconvo"><span class="name">Joeyc</span>: hey everyone</div>
<div class="tribeconvo"><span class="name">JakeP97</span>: hello joey</div>
<div class="tribeconvo"><span class="name">Joeyc</span>: oi m8, whats up</div>
<div class="tribeconvo"><span class="name">TheKid</span>: LOL hey JakeP</div>
<div class="tribeconvo"><span class="name">Joeyc</span>: RIP</div>
<div class="tribeconvo"><span class="name">TheKid</span>: LOL hey JakeP</div>

关于Javascript 替换不影响所有数组元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46059700/

相关文章:

javascript - 使用 javascript 从数据库显示

c - 数组问题C的动态分配

java - 插入排序,4 维数组 Java

c# - 如果 Google Ads 被屏蔽,我如何显示其他内容?

javascript - 如何防止表情符号快捷方式

jquery - 输入字段值的长度

jquery - ASP.NET MVC : How to show value in a label from selected Drop Down List item?

ruby - 嵌套 Ruby 列表生成

javascript - HTML 中 p 标签的 jQuery .attribute

javascript - javascript onclick 属性如何通过循环从数组中获得更多输出?