Javascript 正则表达式替换函数未按预期方式更新DOM
我正在尝试使用正则表达式和javascript更新我的html。我可以捕获我想要的组,但是dom上的任何内容都不会改变我期望的方式 我想发现所有提到澳元的货币,我有一个正则表达式可以捕捉到这一点。然后我需要更改它的显示方式 我使用了.replace函数,但是它似乎没有改变任何东西。它似乎只在console.log中更改它 10AUD 帮助我们所有人Javascript 正则表达式替换函数未按预期方式更新DOM,javascript,html,regex,Javascript,Html,Regex,我正在尝试使用正则表达式和javascript更新我的html。我可以捕获我想要的组,但是dom上的任何内容都不会改变我期望的方式 我想发现所有提到澳元的货币,我有一个正则表达式可以捕捉到这一点。然后我需要更改它的显示方式 我使用了.replace函数,但是它似乎没有改变任何东西。它似乎只在console.log中更改它 10AUD 帮助我们所有人 <p> 20THB</p> <p> There is 100USD, here</p> &l
<p> 20THB</p>
<p> There is 100USD, here</p>
<p>More random sentances that should not be evalued even with 500 numbers in it</p>
<p>Here I can write a bunch like I had 300THB in my pocket and a spare 50AUD note aswell</p>
20THB
这里有100美元
更多的随机语句,即使其中包含500个数字也不应求值
在这里,我可以像口袋里有300泰铢和一张50澳元的备用纸币一样写一堆东西
这里是js部分
regAUD = RegExp(/([0-9]+(AUD))/gi);
function checker() {
str = document.getElementsByTagName('p');
//str = str.innerText;
for (i = 0; i < str.length; i++) {
str[i].id = String(i+"para");
console.log(str[i].innerText);
inner = str[i].innerText;
//Now make an if statement to if we go further
//res = isCurrency(inner); //This passes correctly
res = 1;
if(res === 1){
if(regAUD.test(inner)){
inner = inner.replace(regAUD, '<b>$1</b>');
console.log(inner);
console.log("Done?");
}
}
}
}
regAUD=RegExp(/([0-9]+(AUD))/gi);
函数检查器(){
str=document.getElementsByTagName('p');
//str=str.innerText;
对于(i=0;i
我假设我使用的函数不正确。它确实会显示在控制台中,但不会显示在预期的元素中。它没有改变任何东西,即我希望它目前能使10AUD和500AUD加粗,但它不能做到这一点。是否有更好的方法在DOM中实现此更改,或者我是否错误地使用了此函数?在替换DOM中的regxmatch后,必须将段落innerHTML属性设置为replace
regAUD = RegExp(/([0-9]+(AUD))/gi);
function checker() {
str = document.getElementsByTagName('p');
//str = str.innerText;
for (i = 0; i < str.length; i++) {
str[i].id = String(i+"para");
console.log(str[i].innerText);
inner = str[i].innerText;
//Now make an if statement to if we go further
//res = isCurrency(inner); //This passes correctly
res = 1;
if(res === 1){
if(regAUD.test(inner)){
inner = inner.replace(regAUD, '<b>$1</b>');
str[i].innerHTML= inner;
console.log(inner);
console.log("Done?");
}
}
}
}
regAUD=RegExp(/([0-9]+(AUD))/gi);
函数检查器(){
str=document.getElementsByTagName('p');
//str=str.innerText;
对于(i=0;i
您忘记将新的HTML字符串影响到相关元素自己的HTML
此外,您还可以使用更短的函数
这里有一个参数有两个:
在所需元素上执行高亮显示选择器
突出显示所需货币货币
//突出显示“AUD”提到winthin所有元素。
highlightCurrencyFromElement('p','aud');
函数highlightCurrencyFromElement(选择器、货币){
常量元素=document.querySelectorAll(选择器),
pattern=newregexp(`(\\d+\\s*${currency})`,'gi');
for(设i=0;i
五,
21澳元
50澳元
50欧元
87美元
20澳元(跨度内,因此无突出显示)
变量inner
是元素innerText
的副本。为了更新DOM,您必须显式地更改innerHTML
(因为这是您想要替换它的内容)。此外,您的所有变量都应该用let
或var
声明。哦,您也不需要显式的RegExp
构造函数;只有/…/
正则表达式文字。如果更新了内部文本
,则
将按字面形式呈现,而不是解释为HTML标记。请尝试使用内部HTML代替内部文本。那是个打字错误。很抱歉给您带来不便,感谢您再次强调。