2012-09-01 14 views
16

Tratando de reemplazar todas las instancias de # en una cadena con una variable. No funciona pero tampoco resuelve ningún error.JS reemplazar no funciona en la cadena

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

question_num = 5; 

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

Los hashes permanecen.

¿No estás seguro de lo que me falta?

Respuesta

63

.replace() devuelve una nueva cadena (que no modifica la cadena existente) por lo que se necesitaría:

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

Probablemente también debe hacer question_num una cadena, aunque las conversiones de tipos de automóviles, probablemente manejar eso para usted.

Ejemplo de trabajo: http://jsfiddle.net/jfriend00/4cAz5/

FYI, en Javascript, las cadenas son inmutables - una cadena existente no se modifica. Entonces cualquier método que haga una modificación a la cadena (como concat, replace, slice, substr, substring, toLowerCase, toUpperCase, etc ...) SIEMPRE devuelve una nueva cadena.

6

Tu código es correcto. Simplemente agregue el valor a la variable como este:

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

question_num = 5; 

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