2016-04-28 56 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

相關問題