我努力实现的目标:
online这个词应该显示为绿色,而offline这个词应该显示为黄色。每次我的网页加载。
我所做的:我在谷歌上搜索了一整天,甚至在stackoverflow上也搜索了一整天。
<head>
<style>
.found {
color:red;
}
</style>
</head>
<body>
<input id="s">
<div id="a">
i am online he is offline.
</div>
<script id="jsbin-javascript">
var s = document.getElementById('s');
var div = document.getElementById('a');
function changeNode(n, r, f) {
f=n.childNodes; for(c in f) changeNode(f[c], r);
if (n.data) {
f = document.createElement('span');
f.innerHTML = n.data.replace(r, '<span class=found>$1</span>');
n.parentNode.insertBefore(f, n);
n.parentNode.removeChild(n);
}
}
//s.onkeyup
s.onkeyup = function(){
var spans = document.getElementsByClassName('found');
while (spans.length) {
var p = spans[0].parentNode;
p.innerHTML = p.textContent || p.innerText;
}
if (this.value) changeNode(
div, new RegExp('('+this.value+')','gi')
);
};
</script>
</body>
字符串
因此,每当我在输入框中输入一些东西时,单词就会变得突出显示。然而,我希望这在没有蚂蚁输入框的情况下自动发生,单词在线用绿色,离线用黄色。
先谢了。
6条答案
按热度按时间ebdffaop1#
您可以使用此方法:
字符串
xfb7svmp2#
下面是一个vanilla JavaScript:
1.循环遍历文档中的元素以查找段落;
1.将段落分成空格分隔的单词;
1.用样式化的
span
替换 online 和 offline 的每个示例;以及1.重新构建包含样式化
spans
的段落0vvn1miw3#
事实上,有一个非常简单和新的方法来做到这一点。
只需添加
#:~:text=Highlight%20These
尝试访问此链接
https://stackoverflow.com/questions/38588721#:~:text=Highlight%20a%20text
个注意:仅适用于Chrome:(
jxct1oxe4#
我不明白为什么你需要JavaScript来完成这样的事情。嗯,至少在你解释的方式。
为什么你不能像这样用普通的html来做到这一点:
字符串
这是一个JSfiddle
如果有帮助就告诉我。
elcex8rz5#
在你包含了Jquery.或者Just call the startHighlightProcess方法之后,尝试使用这个方法。
字符串
amrnrhlw6#
JQuery -将满足过滤器的所有段落作为目标
字符串
请注意,这将用新内容替换段落的内容,如果有任何与段落中的元素关联的处理程序,则这些处理程序将丢失。
请小心使用。