如果文本包含“@”,请更改“@”的颜色
if text contains '@' change color of '@'
我正在寻找解决我的问题的方法。
我有一个段落,其中包含来自推特推文的一些文字。现在我想将所有的"@"更改为一种颜色。
这就是我在文本中查找"@"所做的:
if (status.indexOf("@") >= 0)
{
}
但是现在如何更改@的颜色?(添加一个跨度和类或其他东西...
状态是一个变量,其中包含例如的内容,如下所示:
Dita Von Teese draagt geprinte 3D-jurk <a target="_blank" href="http://t.co/s2y6b21S0I">http://t.co/s2y6b21S0I</a> via @<a target="_blank" href="http://twitter.com/Knackweekend">Knackweekend</a>
在没有看到你的 HTML 的情况下,我能提供的最好的是一个简单的替换,我假设status
是 HTML 元素/节点的 jQuery 集合:
status.html(function(i,h){
return h.replace(/@/g,'<span class="atSign">@</span>');
});
结合 CSS:
.atSign {
color: #f90;
}
已更新,因为status
似乎是一个字符串(来自下面的注释(:
var status = '<a target="_blank" href="t.co/s2y6b21S0I">http://t.co/s2y6b21S0I</a>; via @<a target="_blank" href="twitter.com/Knackweekend">Knackweekend</a>',
newStatus = status.replace(/@/g,'<span class="atSign">@</span>');
console.log(newStatus);
JS小提琴演示。
要使用 CSS 为@
和以下a
元素着色:
.atSign,
.atSign + a {
color: #f90;
}
JS小提琴演示。
将@
和以下a
元素包装在span
中:
var status = '<a target="_blank" href="t.co/s2y6b21S0I">http://t.co/s2y6b21S0I</a>; via @<a target="_blank" href="twitter.com/Knackweekend">Knackweekend</a>',
newStatus = status.replace(/(@.+<'/a>)/g,function(a){
return '<span class="atSign">' + a + '</span>';
});
console.log(newStatus);
JS小提琴演示。
引用:
-
html()
. - JavaScript 正则表达式。
-
String.replace()
.
可以在同一索引上插入新的范围,并删除该索引中的现有项。
是的,您需要将@
包装在带有class
的span
中,以便您可以使用 CSS 更改颜色。
你可以像这样操纵 DOM。
.CSS
.atSign {
color: #f90;
}
.HTML
<div id="status">Some @ text <div>that @ contains@what</div>we will@ demonstrate</div>
爪哇语
/*jslint maxerr: 50, indent: 4, browser: true */
(function () {
"use strict";
function walkTheDOM(node, func) {
func(node);
node = node.firstChild;
while (node) {
walkTheDOM(node, func);
node = node.nextSibling;
}
}
function getTextNodes(element) {
var nodes = [];
walkTheDOM(element, function (node) {
if (node.nodeType === 3) {
nodes.push(node);
}
});
return nodes;
}
function highlight(element, string, classname) {
var nodes = getTextNodes(element),
length = nodes.length,
stringLength = string.length,
i = 0,
index,
text,
newContent,
span,
node;
while (i < length) {
node = nodes[i];
newContent = document.createDocumentFragment();
text = node.nodeValue;
index = text.indexOf(string);
while (index !== -1) {
newContent.appendChild(document.createTextNode(text.slice(0, index)));
text = text.slice(index + stringLength);
span = document.createElement("span");
span.className = classname;
span.appendChild(document.createTextNode(string));
newContent.appendChild(span);
index = text.indexOf(string);
}
newContent.appendChild(document.createTextNode(text));
node.parentNode.replaceChild(newContent, node);
i += 1;
}
}
highlight(document.getElementById("status"), "@", "atSign");
}());
在jsfiddle
你怎么能用你的HTML字符串来使用它?
爪哇语
var div = document.createElement("div"),
html;
div.innerHTML = 'Dita Von Teese draagt geprinte 3D-jurk <a target="_blank" href="http://t.co/s2y6b21S0I">http://t.co/s2y6b21S0I</a> via @<a target="_blank" href="http://twitter.com/Knackweekend">Knackweekend</a>';
highlight(div, "@", "atSign");
html = div.innerHTML;
console.log(html);
输出
Dita Von Teese draagt geprinte 3D-jurk <a target="_blank" href="http://t.co/s2y6b21S0I">http://t.co/s2y6b21S0I</a> via <span class="atSign">@</span><a target="_blank" href="http://twitter.com/Knackweekend">Knackweekend</a>
在jsfiddle
而且看不到jquery或正则表达式:)
相关文章:
- 使用JS如何动态更改显示的html文件中的文本背景颜色
- 高亮显示时编辑文本大小和颜色
- 使用CSS/JavaScript更改剑道图工具提示文本颜色
- mouseover和mouseleave文本颜色更改在指令链接中不起作用
- 如何在php中创建一个函数,该函数与文本区域一起工作,通过输入类似[color:red]的内容来打印具有等效颜色的文本
- HTML-从mysql生成的选择框中的一个选项更改文本区域的颜色
- 如果值为负数,如何更改文本的颜色
- 1种颜色的Javascript闪烁文本更长
- 如何更改圆环图中文本的颜色
- 如何在flash html5画布项目中动态更改文本颜色
- 单击时将文本的颜色更改为随机颜色(按钮)
- 使用JavaScript淡化文本颜色
- 在不更改边框颜色的情况下更改文本的颜色
- 使用Javascript切换文本颜色
- 我可以使用jqgrid的oncellselect事件根据单元格内容将文本颜色更改为蓝色吗
- 使用Javascript更改文本区域的颜色
- 如何使用颜色选择器来更改背景中的文本
- 内部 DIV 颜色文本在鼠标悬停时没有更改
- React Native TouchableHighlight字体颜色文本更改
- 邮件类型输入:如果邮件错误或正确,动态改变按钮的颜色/文本