Javascript a<;内文本中特定于颜色的词(关键字)<;td>;

Javascript a<;内文本中特定于颜色的词(关键字)<;td>;,javascript,jquery,html,jsp,Javascript,Jquery,Html,Jsp,我在做一个项目,现在我需要做一些我不知道的事情。我想给 我可以做静态的,因为文本是随机的,它们来自数据库 这是一个普通的文本,我想给像“动物,宠物”这样的词涂上颜色。 并为每种颜色加上特定的颜色,例如,动物的外形像红色,宠物的外形像蓝色 我想我必须使用Jquery来完成它,并在页面加载后创建一个函数来完成它(readyFunction) 但是我没有任何想法去做,我是jquery新手。你能给我一些想法吗 谢谢 这确实是一个“肮脏”的解决方案,但将作为如何完成任务的示例: <body>

我在做一个项目,现在我需要做一些我不知道的事情。我想给

我可以做静态的,因为文本是随机的,它们来自数据库

这是一个普通的文本,我想给像“动物,宠物”这样的词涂上颜色。 并为每种颜色加上特定的颜色,例如,动物的外形像红色,宠物的外形像蓝色

我想我必须使用Jquery来完成它,并在页面加载后创建一个函数来完成它(readyFunction)

但是我没有任何想法去做,我是jquery新手。你能给我一些想法吗

谢谢

这确实是一个“肮脏”的解决方案,但将作为如何完成任务的示例:

<body>
  <table id="the_table">
   <tr>
     <td>random words from DB: like an apple, pet, whatever, yet another apple</td>
   </tr>
  </table>
  <script>
  $(document).ready(function () {
    var content_cell,
    random_words = "",
    colors_map = {
      "apple": "red",
      "pet": "blue"
    };
   // selector for your specific table cell
    $('#the_table tr').each(function() {
      content_cell = $(this).find("td:first");    
    });
    // get cell content
    random_words = content_cell.html();
    // replace your keywords according the map
    $.each(colors_map, function( index, value ) {
      random_words = random_words.replace(new RegExp(index, 'g'), "<font color='" + value + "'>" + index + "</font>");
    });
    // set back html content into the cell
    content_cell.html(random_words);
  });
  </script>
</body>

DB的随机词:像一个苹果,宠物,随便什么,还有另一个苹果
$(文档).ready(函数(){
var内容单元,
随机词=”,
颜色\u映射={
“苹果”:“红色”,
“宠物”:“蓝色”
};
//特定表格单元格的选择器
$('#表tr')。每个(函数(){
content_cell=$(this.find(“td:first”);
});
//获取单元格内容
random_words=content_cell.html();
//根据地图替换关键词
$.each(颜色、贴图、函数(索引、值){
random_words=random_words.replace(新的RegExp(索引'g'),“”+index+“”);
});
//将html内容设置回单元格中
html(随机词);
});

假设您的浏览器支持html5,不需要JQuery,请尝试以下代码:

function renderKey(){
  //create color list in case you don't want to get invisible color such as 'white' from random color..
  // make the list long enough to avoid duplicated color 
  var colors = ['red', 'blue', 'orange', 'cyan', 'black']; 
  var keyColor = {};
  var keyIndex = 0;

  //you may need more selectors to exclude unexpected elements, e.g. <td> in <thead>.
  var x = document.querySelectorAll("td");    
  for (i in x){ 
    //suppose your key words seperated by ',' in <td>
    var keyWords = x[i].innerHTML.split(',');    
    x[i].innerHTML =  keyWords.reduce(
      function(total, value, index){
        return total + '<span style="color:' + 
             (keyColor[value] || (keyColor[value] = colors[ keyIndex++ % colors.length])) + 
             '">' + value + '</span>';
      },
      ''
    );      
  }
}
函数renderKey(){
//创建颜色列表,以防您不想从随机颜色中获得不可见的颜色,如“白色”。。
//使列表足够长,以避免重复的颜色
var colors=[“红色”、“蓝色”、“橙色”、“青色”、“黑色”];
var keyColor={};
var指数=0;
//您可能需要更多选择器来排除意外元素,例如,在中。
var x=document.querySelectorAll(“td”);
对于(i in x){
//假设你的关键词以“,”分隔
var关键字=x[i].innerHTML.split(',');
x[i].innerHTML=keyWords.reduce(
函数(总计、值、索引){
返回总计+“”+值+“”;
},
''
);      
}
}

谢谢你的解答,我将以它为例。你能给我解释一下这句话吗?“$.each(colors_map,function(index,value){random_words=random_words.replace(new RegExp(index,'g'),”“+index+”;)););”--我不明白,我在替换什么?就我所见,我在colorsMap中做了一个循环,但这都是我得到的…在$each handler函数中,您将获得颜色到关键字映射的每个元素的键和值。每次您都会尝试使用RegEx全局查找文本中的“索引”(所有条目)。如果找到,您将用相同的“索引”替换它们中的每一个,但用标记包装,其中颜色设置为地图的“值”。若未找到任何内容,迭代器$each将转到下一个映射条目,依此类推。如果还有其他不清楚的地方,请告诉我。谢谢你更好地解释,我相信我需要做一些改变。但我认为这是一个非常好的解决方案。你真的认为这是“肮脏的”,所以我可以把它做得更好吗?你应该编写你自己的选择器,就像我使用的find(“td:first”),这可能不是你的情况;你应该检查选择器是否返回一些html内容;你可能应该看看区分大小写等等。。。大量工作使其成为可靠的代码;)你说得对,谢谢你的帮助。现在,我将尝试根据您的解决方案,例如为“{}”之间的所有单词着色。谢谢你的安慰,我要用它作为例子。因为我需要用特定的颜色给单词上色,例如,单词“pet”总是用蓝色。不要给那些不是我的关键词的词涂颜色。但这对我有很大帮助!