2012-04-24 85 views
2

可能重複:
javascript replace function not workingJavaScript字符串替換工作不

這裏是我的JS代碼:

var imgTitle = "fizz"; 
var imgTitle2 = "fizz"; 
var imgInfo = "buzz"; 
var imgSrc = "foo"; 
var liHTML = "<li class='imgThumbLi ui-draggable' title='IMG_TITLE'><img class='image' src='IMG_SRC' title='IMG_TITLE'/><div class='imageInfo'><p class='detailTitle'>IMG_INFO</p></div></li>"; 

// Search and replace all dummy values. 
liHTML.replace("IMG_TITLE", imgTitle); 
liHTML.replace("IMG_TITLE2", imgTitle2); 
liHTML.replace("IMG_SRC", imgSrc); 
liHTML.replace("IMG_INFO", imgInfo); 

alert(liHTML); 

聞聽此事打印出來:

<li class='imgThumbLi ui-draggable' title='IMG_TITLE'><img class='image' src='IMG_SRC' title='IMG_TITLE'/><div class='imageInfo'><p class='detailTitle'>IMG_INFO</p></div></li> 

(與之前的字符串替換調用相同)。在螢火蟲我收到一個錯誤,指出:

c.replace不是一個函數

得到這個錯誤,隨時隨地的代碼段中執行。 爲什麼這個字符串不能替換?!?!提前致謝!

+1

你沒有回來! :) – Bakudan 2012-04-24 11:59:46

+6

字符串是不可變的。 [MDN文檔](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/String/replace)很清楚:*「這個方法不會改變它被調用的String對象,它只是返回一個新的字符串。「*你爲什麼認爲'.replace()'會在原地工作? – 2012-04-24 12:01:08

+1

「IMG_TITLE2」的佔位符在哪裏? – 2012-04-24 12:01:12

回答

11

嘗試

liHTML = liHTML.replace("IMG_TITLE", imgTitle); 
1

您需要設置每行的新值。

liHTML = liHTML.replace("IMG_SRC", imgSrc); 
1

你沒有對被替換的值做任何事情。嘗試:

var imgTitle = "fizz"; 
var imgTitle2 = "fizz"; 
var imgInfo = "buzz"; 
var imgSrc = "foo"; 
var liHTML = "<li class='imgThumbLi ui-draggable' title='IMG_TITLE'><img class='image' src='IMG_SRC' title='IMG_TITLE'/><div class='imageInfo'><p class='detailTitle'>IMG_INFO</p></div></li>"; 

// Search and replace all dummy values. 
liHTML = liHTML.replace("IMG_TITLE", imgTitle); 
liHTML = liHTML.replace("IMG_TITLE2", imgTitle2); 
liHTML = liHTML.replace("IMG_SRC", imgSrc); 
liHTML = liHTML.replace("IMG_INFO", imgInfo); 

alert(liHTML); 
0

你必須保存在變量liHTML結果:

liHTML = liHTML.replace("IMG_TITLE", imgTitle); 
liHTML = liHTML.replace("IMG_TITLE2", imgTitle2); 
liHTML = liHTML.replace("IMG_SRC", imgSrc); 
liHTML = liHTML.replace("IMG_INFO", imgInfo); 

//編輯 盛衰有點慢:d

0

你有幾個問題存在。首先你不設定價值。替換隻是產生新的價值。第二個問題是,在你的情況下,你應該使用replace-all而不是replace。

替換隻替換第一個實例。

// Scope should have one var. Combine those vars. 
var imgTitle = "fizz", 
    imgTitle2 = "fizz", 
    imgInfo = "buzz", 
    imgSrc = "foo", 
    liHTML = "<li class='imgThumbLi ui-draggable' title='IMG_TITLE'><img class='image' src='IMG_SRC' title='IMG_TITLE'/><div class='imageInfo'><p class='detailTitle'>IMG_INFO</p></div></li>"; 

// Search and replace all dummy values. 
liHTML = liHTML.replace(new RegExp("IMG_TITLE", 'g'), imgTitle); 
liHTML = liHTML.replace(new RegExp("IMG_TITLE2", 'g'), imgTitle2); 
liHTML = liHTML.replace(new RegExp("IMG_SRC", 'g'), imgSrc); 
liHTML = liHTML.replace(new RegExp("IMG_INFO", 'g'), imgInfo); 

alert(liHTML);