2012-02-18 19 views
15

Mã nàynhiều đường dây cảnh báo trong Javascript

alert("Hello again! This is how we"+"\n"+"add line breaks to an alert box!"); 

không hoạt động. Lỗi tên giao diện điều khiển JavaScript của Firefox dưới dạng "chuỗi ký tự chưa hoàn thành" và trỏ vào "biểu tượng trước \ n. Tôi muốn cảnh báo bằng văn bản nhiều dòng. Không cần jQuery. Vui lòng

+0

Mã vi phạm không phải là đoạn mã đó. Lưu ý rằng các thông báo cú pháp cú pháp hầu như luôn gây hiểu lầm – Esailija

+0

khi tôi thêm // trước khi dòng này hoạt động tốt. – Pave

+6

Tuy nhiên, nếu bạn chạy mã đó trong sự cô lập, nó sẽ hoạt động bình thường, tôi vừa kiểm tra nó. Vui lòng cung cấp thêm mã. – Esailija

Trả lời

31

Chưa thử nghiệm nhưng có thực hiện được không ?

alert("Hello again! This is how we \n add line breaks to an alert box!"); 
+2

lỗi "thiếu; trước câu lệnh" – Pave

0

error "missing ; before statement" đó nói với tôi những dấu chấm phẩy là mất tích từ trên dòng mã này. cú pháp thông thường gotchya là nếu phát biểu rằng làm ngoặc không đóng đúng cách. Hoặc dấu ngoặc nhọn.

17

này chỉ xảy ra với tôi ... chính xác. Tôi cần thay đổi nó đến \\n thay vì \n.

alert("Hello again! This is how we"+"\\n"+"add line breaks to an alert box!"); 
+0

Cảm ơn, điều này đúng khi tất cả mã javascript đến từ phía máy chủ dưới dạng chuỗi, ví dụ: "alert ('Xin chào lần nữa! Đây là cách chúng tôi' + '\\ n' + 'thêm ngắt dòng vào một hộp cảnh báo! '); "; -> với công việc ngắt dòng \\ n, nếu không sẽ không thành công. – FabianSilva

+0

Không, chỉ một mình thôi. Nếu bạn đặt nó vào một chuỗi khác (như khi bạn tạo ra một cảnh báo echo ('x \ ny'); ";), kết quả sẽ là một cảnh báo ('x [linebreak] y') ;, đó là không chính xác. Bạn phải tăng gấp đôi thoát nó với \\ n, có, nhưng điều này không có gì để làm với JavaScript. – StanE

0

Sử dụng dấu nháy đơn.

alert("Hello again! This is how we"+'\n'+"add line breaks to an alert box!"); 
4

Thêm thay đổi \n-\\n nên làm việc nếu bạn đang render các serverside alert (ví dụ: Trên một trang web), nhưng nếu bạn đang chạy phía khách hàng (ví dụ: thử nghiệm vv) chỉ \\n sẽ không làm việc làm việc. Ví dụ: thử chạy các dòng sau trên trang web this.

alert("Hello again! This is how we"+"\n"+"add line breaks to an alert box!"); 

hay:

alert("Hello again! This is how we" +"\\n" +"add line breaks to an alert box!"); 

Trong jsfiddle, người đầu tiên làm việc, bởi vì nó chạy nó phía khách hàng, nhưng nếu bạn đang chạy nó serverside, nó đòi hỏi các dấu gạch chéo kép (\\n) Tôi không chắc chắn tại sao điều này là, nhưng tôi đã thử nghiệm nó nhiều lần.

Hy vọng điều này sẽ hữu ích!

+0

dấu gạch chéo kép làm việc !!! – xke

1

Câu hỏi là cũ nhưng tôi muốn đưa ra một câu trả lời rõ ràng và giải thích lý do tại sao điều này xảy ra cho những người khác đến đây:

Trước hết, không có gì sai với dòng mã JavaScript trong câu hỏi là. Nó hoàn toàn hợp lệ và không tạo ra lỗi phân tích cú pháp. Lý do cho vấn đề trong trường hợp của Vitalmax là rất có thể bởi vì anh/cô ấy không đăng mã bổ sung, bao quanh dòng đó.

Dưới đây là một ví dụ trong PHP, trong đó cho thấy tại sao các phân tích cú pháp JS phàn nàn về cú pháp:

<?php 
    echo "alert('Hello again! This is how we\nadd line breaks to an alert box!');"; 
?> 

Sản lượng server-side phân tích cú pháp sau đó là (đây là những gì các trình duyệt được):

alert("Hello again! This is how we 
add line breaks to an alert box!"); 

Trong JavaScript, các chuỗi không được có ngắt dòng thực. Thay vào đó, chúng phải luôn luôn được thoát (như: \ n), do đó trình duyệt phàn nàn về "chuỗi ký tự chưa được hoàn thành" ở ngắt dòng thực. Có một số ngoại lệ đối với quy tắc này, như đối với các trình lập bảng ngang (\ t). Vì vậy, (trong trường hợp này) bạn phải thoát khỏi các ngắt dòng hai lần với \\ n. Vì vậy, khi PHP phân tích cú pháp và chuyển đổi nó từ \\ n thành \ n, JavaScript có thể chuyển đổi từ \ n thành [ngắt dòng thực].

Đúng PHP ví dụ sẽ là:

<?php 
    echo "alert('Hello again! This is how we\\nadd line breaks to an alert box!');"; 
?> 

Hoặc:

<?php 
    echo 'alert("Hello again! This is how we\nadd line breaks to an alert box!");'; 
?> 

Trong trường hợp thứ hai bạn không cần phải tăng gấp đôi thoát khỏi nó bởi vì nhân vật thoát trong chuỗi PHP với dấu nháy đơn không đã giải mã (\ n lần \ n).

1
<script> 
alert("Hello. \n How are you?") 
</script> 
+1

Chào mừng bạn đến với Stack Overflow! Mặc dù đoạn mã này có thể giải quyết được câu hỏi, [bao gồm cả giải thích] (// meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers) thực sự giúp cải thiện chất lượng bài đăng của bạn. Hãy nhớ rằng bạn đang trả lời câu hỏi cho người đọc trong tương lai và những người đó có thể không biết lý do cho đề xuất mã của bạn. Ngoài ra, hãy cố gắng không gắn mã của bạn với các nhận xét giải thích vì điều này làm giảm khả năng đọc của cả mã và giải thích! – FrankerZ

1

Tập lệnh này phù hợp với tôi.

<script> 
    alert("Hello. \r\n How are you?"); 
</script> 
0

Một cách thêm chức năng tôi xin đề nghị là xác định print() chức năng riêng của mình và quên đi đặt \\n cho mỗi dòng bằng tay

//define 
 
var print = new Function("var lines=arguments[0]+'\\n';; for(var i=1;i<arguments.length;i++){lines+=arguments[i]+'\\n';} alert(lines);"); 
 
    
 
//call 
 
print("say","hello","to","javascript","this","is ","awesome");

Bây giờ bạn có thể gọi print() với nhiều đối số và mỗi đối số sẽ có sẵn trong một dòng riêng biệt.