如何查找文档中的所有数字并设置它们的样式
How to find all numbers in document and style them?
我目前正在一个网站(个人)上工作,在那里我使用JavaScript来查找.html文件中的所有数字(实际上只是在#wrapper
div中)。我想把它们都染上颜色。
我的代码如下:
window.onload=function(){
var str = document.getElementById("wrapper").innerHTML;
var patt =/'d+/g;
var res = str.match(patt);
res = str.replace(patt, "<span class='em'>" + res + "</span>");
document.getElementById("wrapper").innerHTML = res;
window.alert(res)
};
这个代码的结果是,每个数字都被一个字符串替换,该字符串包含一行中标记区域中的每个数字,这显然不是我想要的。
我甚至试过用for循环,但也没用。
替换这些行:
var res = str.match(patt);
res = str.replace(patt, "<span class='em'>" + res + "</span>");
带有
var res = str.replace(patt, "<span class='em'>$&</span>");
特殊令牌$&
告诉replace
在替换字符串中包括在该位置匹配的文本。(如果在某个时候您在正则表达式中使用了捕获组,那么您也可以使用$1
[用于第一个]、$2
[用于第二个]等来引用这些组。)
示例:
var wrapper = document.getElementById("wrapper");
wrapper.innerHTML = wrapper.innerHTML.replace(/'d+/g, '<span class="em">$&</span>');
.em {
color: red;
}
<div id="wrapper">This is the wrapper with numbers in it. Like 123. And 456.</div>
注意:如果在包装器元素中的元素上有任何事件处理程序,它们将通过替换innerHTML
来删除(因为旧元素会被销毁并用新元素替换)。
我建议修改您的replace()
:
window.onload = function() {
var str = document.getElementById("wrapper").innerHTML;
var patt = /('d+)/g;
var res = str.replace(patt, "<span class='em'>$1</span>");
document.getElementById("wrapper").innerHTML = res;
};
span.em {
color: #f90;
}
<div id="wrapper"><p>12345</p><p>12345</p></div>
"<span class='em'>$1</span>"
将正则表达式的(第一)匹配部分插入到替换字符串中。
res = str.replace(patt, "<span class='em'>$1</span>");
参考文献:
String.prototype.replace()
相关文章:
- 将数字四舍五入到小数点后两位,以设置货币格式
- 在Jquery倒计时计时器上设置每个数字的动画
- 可以't将几个数字设置为<输入类型=“;数字“>
- 对象获胜'如果qml中的其他地方定义了数字动画属性,则t设置动画
- Mustache.js lambdas和数字格式设置为Fixed
- AngularJs:在数字输入字段中设置验证的条件最小值和最大值
- 需要将变量设置为特定的数字范围
- 设置递增到另一个数字的确切持续时间
- 通过.toString()设置数字格式
- 当一些文本粘贴到文本框中时(没有设置超时),是否检查数字
- 是否有一种本机方法可以将字符串从任何区域设置转换为数字
- 如何根据用户区域设置数字和日期的格式
- 画布填充从数字开始设置样式
- 将字符串数字的格式设置为货币
- 如何在 jquery 颜色选择器中设置数字十六进制颜色
- Dijit DateTextBox - 以 ISO/数字格式设置日期
- 使用 jQuery .val() 设置时在 中显示为 NaN 的数字
- 从数组中获取数字并将此数字设置为其他函数的函数
- 是否可以将javascript数字设置为32位?
- 为自动计算的数字设置要使用Javascript显示的小数位