2011-11-27 88 views
1

我有一個js替換函數來替換預置表單上兩個單選按鈕旁邊的文本。替換文本函數不工作在資源管理器中

腳本如下。

document.body.innerHTML=document.body.innerHTML.replace("Payment by <b>Moneybookers</b> 
e-wallet<br>",""); 

document.body.innerHTML=document.body.innerHTML.replace("Maestro, Visa and other credit/debit cards by <b>Moneybookers</b>","Pago con Diners Club, Mastercard o Visa");}onload=x; 

該腳本在Chrome和Firefox中運行良好,但是腳本在Explorer中未執行。

我相信它與我正在取代的文本有關係嗎?當我使用函數來替換文本中的no時,/ - 在文本中 - 它可以在瀏覽器中正常工作,但是,例如,當我嘗試替換文本時。 - 「Moneybookers的Maestro,Visa和其他信用卡/借記卡」在探險家不工作..我假設因爲昏迷和正斜槓。老實說,我已經嘗試了一切,但只是無法得到這個工作。任何幫助將不勝感激!!

+1

如果你看一下在瀏覽器中的JavaScript控制檯,你會看到一個語法錯誤。所以這將是從哪裏開始。您應該在狀態欄的左側看到一些黃色**!**,如果單擊它,則會顯示錯誤。 –

回答

1

不確定它是否相關(我是沒有IE的Mac用戶),但不應該使用多行字符串。改爲使用\n

+0

謝謝湯姆,我會說實話我是一個真正的新手,我將如何使我的腳本適應我們\ n反而..?非常感謝! – LEOPM

+0

'document.body.innerHTML = document.body.innerHTML.replace(「付款Moneybookers \ ne-wallet
」,「」);' –

1

innerHTML返回的內容因瀏覽器不同而不同,因爲它沒有標準(內容相同,但顯示方式可能不同)。在某些瀏覽器上進行替換可能會失敗。你應該採取其他方法來做替換。

更好的方法是將要替換的文本換成span,這樣您可以更輕鬆地定位要替換的內容。

<span id="thatFirstThing">Payment by <b>Moneybookers</b>e-wallet<br></span> 

的,你可以做

document.getElementById("thatFirstThing").innerHTML = ""; 

P.S:這樣做的innerHTML對身體更換後也有巨大的副作用。由於您正在更換洞頁的內容。所有綁定在頁面上的事件處理程序都將消失。

編輯:如果你不能修改HTML頁面,它有點棘手,因爲DOM不適合做這樣的事情。你可以做的是通過導航DOM中的目標父元素document.getElementByIdchildNodes。一旦你有你的父母元素只是寫你想要的新內容,而不做替換。

它到底會是這個樣子:

document.getElementById("someSection").childNodes[0].childNodes[1].childNodes[0].innerHTML = ""; 
+0

*「innerHTML返回的內容因瀏覽器而異。 ..「*確實,但無關緊要,因爲OP是*設置*屬性,而不是讀取它。 *「...因爲沒有關於它的標準......」*它正在[作爲HTML5的一部分被標準化](http://www.w3.org/TR/html5/apis-in-html -documents.html#的innerHTML)。 –

+0

@ T.J.Crowder他都閱讀並設置了'document.body.innerHTML'的值,你是不是在讀它的意思? – HoLyVieR

+0

嘿,非常感謝您的關注。我只是這個整個JS的新事物。你能否建議我應該如何修改這個腳本,真相是別人爲我寫的......我應該把腳本放在我的腳本之前..?你在哪裏「有那麼一件事」非常抱歉 - 我在那裏放什麼......?非常感謝!! – LEOPM

相關問題