2010-07-13 138 views
1

我做這樣的事情:JavaScript的替代

<p>SQL</p> 
<p>sql</p> 
<p>sQl</p> 
<p>SqL</p> 
<script type="text/javascript"> 
var ps = document.getElementsByTagName('p'); 

for(var i = 0; i < ps.length; i++) { 
var p = ps[i]; 
p.childNodes[0].nodeValue.replace(/sql/gi, 'VB.NET'); 
p = null; 
} 
</script> 

但它不替換文本。怎麼了? 謝謝。

+0

這是工作,但你是不是值設置到任何東西。 – BrunoLM 2010-07-13 14:10:15

回答

4

替換爲而不是一種增變器方法。

el.nodeValue = el.nodeValue.replace(/regex/,'something'); 

使用它像這樣...

remember to google.. surprise!

+0

好的,謝謝! 問題解決了! – thomas 2010-07-13 14:12:25

+0

@thomas:嘿,你的問題已經在Google上用meder的搜索條件排名第四;-) – Boldewyn 2010-07-13 14:35:46

0

嘗試

p.childNodes[0].nodeValue = p.childNodes[0].nodeValue.replace(/sql/gi, 'VB.NET'); 

p.innerHTML = p.innerHTML.replace(/sql/gi, 'VB.NET'); 
+0

注意使用innerHTML,因爲它仍然不是dom的正式組成部分(儘管它應該)。 – gnome 2010-07-13 14:33:17

0

你沒有指定更換回p元素。

還記得alert是你的朋友。看看p.childNodes[0].nodeValue中有什麼。

0

試試這個 p.childNodes [0] .nodeValue = p.childNodes [0] .nodeValue.replace(/ sql/gi,'VB.NET');

0

我相信替換,在這裏,只是返回值(這是一段時間)。

你試過:

p.childNodes[0].nodeValue = p.childNodes[0].nodeValue.replace(/sql/gi, 'VB.NET'); 
0

我會拉他們趕出在文件頭的功能,然後調用結束標記之前的方法。這將確保在JS面前的文件記錄執行:

// head 
<script type='text/javasript'> 
function changeText() { 
var ps = document.getElementsByTagName('p'); 
for(var i = 0; i<ps.length; i++) { 
var node = ps[i].childNodes[0].nodeValue.toLowerCase(); 
node = node.replace('sql', 'VB.NET'); 
ps[i].childeNodes[0].nodeValue = node; 
} 
} 
</script> 
// Before the closing body tag 
<script type='text/javascript'>changeText();</script> 

你也可以使用jQuery,這裏有一個查找/替換的方法,Find & replace jquery