2012-09-01 61 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);