2016-04-28 120 views
-1

我想用JavaScript代替一个Word,但是当脚本运行这个JavaScript时,也要替换Word。 的想法是添加萨姆风格字当脚本找到的文件的话,那么我用REPLACE要做到这一点,看看代码使用javascript添加样式一个词

document.body.innerHTML = document.body.innerHTML.replace('Amaru', '<span style=font-family:"Inder"!important;color:#0c5d4e;text-transform:lowercase;>amaru</span>'); 

谢谢你这么多。

+0

正在脚本标记出身体的可能性吗? – Harangue

回答

0

您也有语法错误。因为你没有在报价中包装你的风格。

但是,最好使用正则表达式。

document.body.innerHTML = document.body.innerHTML.replace(/Amaru/g, '<span style=\'font-family:"Inder"!important;color:#0c5d4e;text-transform:lowercase;\'>amaru</span>');
Amaru 1 
 
<br> 
 
Amaru 2

+0

太棒了,它的作品。但现在有另一个问题也取代**链接**或** ALT **说阿马鲁 – sittelle

+0

@sittelle,请打开另一个职位。而且,这一次,更加明确的代码。更多的代码会让你的结果更快 – Mojtaba

+0

这是甚么答案?它不能解决问题... – tjscience

0

您将需要使用正则表达式,你不希望替换匹配是一个脚本标签内的字符串,这使得它更复杂一点。

但是你可以用所谓的正则表达式技术做到这点lookaround

像这样的正则表达式应该做的伎俩:用你的代码

(?!<script[^>]*?>)(\bAmaru\b)(?![^<]*?<\/script>)

这里到位:

var regex = /(?!<script[^>]*?>)(\bAmaru\b)(?![^<]*?<\/script>)/; 
document.body.innerHTML = document.body.innerHTML.replace(regex, '<span style=font-family:"Inder"!important;color:#0c5d4e;text-transform:lowercase;>amaru</span>'); 

TBH我不会真的推荐在原始HTML上使用正则表达式

+0

这有一个问题,看看word''是关闭第一个'/' – sittelle

+0

@sittelle我的道歉,我已经解决了。 – Rob

+0

谢谢,你知道如何避免采取链接和ALT,Word出现在哪里?,非常感谢你。 – sittelle

1

解决此问题的最佳方法可能是将要运行替换的内容包装到父div中。这样,您不必担心替换影响内容div以外的内容。另外,如果你想要替换的不仅仅是第一个匹配,你将不得不使用正则表达式(/ Amari/gi),如下面的代码片段所示。我忽略了案件。

<div id="replace-content"> 
 
    Amari 
 
</div> 
 
<script> 
 
    var amari = 'Amari'; 
 
    
 
    var replaceContent = document.getElementById('replace-content'); 
 
    var html = replaceContent.innerHTML.replace(/Amari/gi, '<span style="color:red">Amari</span>'); 
 
    replaceContent.innerHTML = html; 
 
    
 
    console.log(amari); 
 
</script>

编辑

如果你不能够修改为抢在他的评论中指出的标记,你可以选择从DOM查询忽略的脚本。

<div> 
 
     Amari 
 
    </div> 
 
    <script> 
 
     var amari = 'Amari'; 
 
     
 
     var elements = document.querySelectorAll('*:not(script)'); 
 
     
 
     for (var i = 0; i < elements.length; i++) { 
 
     var html = elements[i].innerHTML.replace(/Amari/gi, '<span style="color:red">Amari</span>'); 
 
     elements[i].innerHTML = html; 
 
     } 
 
     console.log(amari); 
 
    </script>

+0

虽然这是一个好主意,但是你认为OP可以改变JavaScript以外的标记。他们没有指出。 – Rob

相关问题