2012-09-01 60 views
16

試圖用變量替換字符串中#的所有實例。它不工作,但不會重新調整任何錯誤。JS替換不能在字符串上工作

answer_form = '<textarea name="answer_#" rows="5"></textarea>'+ 
       '<input type="file" name="img_#" />'; 

question_num = 5; 

answer_form.replace(/#/g, question_num); 

哈希依然存在。

不知道我錯過了什麼?

回答

63

.replace()返回一個新字符串(它不修改現有的字符串),所以你將需要:

answer_form = answer_form.replace(/#/g, question_num); 

你或許也應該question_num一個字符串,雖然汽車類型轉換可能搞定你。

工作例如:http://jsfiddle.net/jfriend00/4cAz5/

僅供參考,在Javascript中,字符串是不可變的 - 現有的字符串不會被修改。因此,任何修改字符串的方法(如concat,replace,slice, substr, substring,toLowerCase,toUpperCase等)總是返回一個新的字符串。

6

你的代碼是正確的。只需將值添加到像這樣的變量中:

answer_form = '<textarea name="answer_#" rows="5"></textarea>'+ 
       '<input type="file" name="img_#" />'; 

question_num = 5; 

answer_form = answer_form.replace(/#/g, question_num);