2012-09-01 14 views
16

Versuchen, alle Instanzen von # in einer Zeichenfolge durch eine Variable zu ersetzen. Es funktioniert nicht, aber auch kein Fehler.JS ersetzen funktioniert nicht auf Zeichenfolge

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

question_num = 5; 

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

Die Hashwerte bleiben erhalten.

Nicht sicher, was ich vermisse?

Antwort

63

.replace() gibt einen neuen String (es nicht die vorhandene Zeichenfolge ändern), so müssten Sie:

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

Sie wahrscheinlich auch question_num ein String machen sollte, obwohl Umwandlungen Autotyp wahrscheinlich, dass für Sie.

Arbeitsbeispiel: http://jsfiddle.net/jfriend00/4cAz5/

FYI, in Javascript, Strings sind unveränderlich - eine bestehende Zeichenfolge nie geändert wird. Jede Methode, die eine Änderung an der Zeichenkette vornimmt (wie concat, replace, slice, substr, , toLowerCase, toUpperCase, etc ...), gibt IMMER eine neue Zeichenkette zurück.

6

Ihr Code ist korrekt. Fügen Sie einfach den Wert der Variablen wie folgt hinzu:

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

question_num = 5; 

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