2012-09-01 2 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/

FYI、JavaScriptで、文字列は不変です - 既存の文字列は変更されることはありません。したがって、文字列を変更するメソッド(concatreplaceslicesubstrsubstringtoLowerCasetoUpperCaseなど)は常に新しい文字列を返します。

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); 
関連する問題