2012-09-01 30 views
16

Cố gắng thay thế tất cả các phiên bản của # trong chuỗi bằng một biến. Nó không hoạt động nhưng cũng không trả lại bất kỳ lỗi nào.JS thay thế không hoạt động trên chuỗi

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

question_num = 5; 

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

Dấu còn lại.

Bạn không chắc chắn mình đang thiếu gì?

Trả lời

63

.replace() trả về một chuỗi mới (nó không sửa đổi các chuỗi hiện có), do đó bạn sẽ cần:

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

Bạn có lẽ cũng nên làm question_num một chuỗi mặc dù loại tự động chuyển đổi có thể xử lý điều đó cho bạn.

dụ làm việc: http://jsfiddle.net/jfriend00/4cAz5/

FYI, trong Javascript, dây là không thay đổi - một chuỗi hiện có là không bao giờ thay đổi. Vì vậy, bất kỳ phương pháp nào thực hiện sửa đổi đối với chuỗi (như concat, replace, slice, substr, substring, toLowerCase, toUpperCase, v.v.) LUÔN trả về một chuỗi mới.

6

Mã của bạn là chính xác. Chỉ cần thêm giá trị vào biến như sau:

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

question_num = 5; 

answer_form = answer_form.replace(/#/g, question_num); 
Các vấn đề liên quan