2010-04-26 23 views
6

Tôi đang viết một trò chơi và tôi có một bảng điều khiển dành cho nhà phát triển để tương tác với các phương pháp JavaScript trong trò chơi. Tôi có một vấn đề mặc dù; Tôi không thể tìm ra cách để thả các lỗi JavaScript vào bảng điều khiển. Có anyway để viết lỗi cho một phần tử div hoặc HTML?Có thể kết xuất các lỗi JavaScript vào một div trong HTML không?

+2

'Tôi có thể tìm ra how' ... Bạn có nghĩa là không thể? – SLaks

+0

Tôi nghĩ anh ấy thực sự có nghĩa là 'có thể', anh ta nói anh ta đã biết cách thả tin nhắn vào bàn điều khiển –

+0

Tôi có nghĩa là không thể xin lỗi các bạn –

Trả lời

6

Có vẻ như bạn đã có khả năng thực thi JS đang hoạt động, và chỉ cần nắm bắt đầu ra lỗi? Nếu vậy, bạn sẽ có thể làm như vậy bằng cách gói thực thi mã của bạn trong một khối try ... catch:

var result; 

try { 
    result = eval($("#console-input").val()); 
} catch (ex) { 
    if (ex !== null && typeof ex !== "undefined") { 
     if (ex.message) ex = ex.message; 
    } else { 
     ex = "An unknown error occurred."; 
    } 

    result = ex; 
} 

$("#console-output").append($("<p/>").text(result)); 
$("#console-input").val(""); 

này sẽ bổ sung kết quả của mã cho một div đầu ra nếu không có lỗi xảy ra. Nếu lỗi làm xảy ra, thay vào đó, nó sẽ xuất ra thông báo lỗi (nếu có) hoặc "Đã xảy ra lỗi không xác định".

+0

+1 chi tiết hơn câu trả lời của tôi! –

+0

tuyệt vời cảm ơn bạn rất nhiều Ben –

0

Lỗi JavaScript được xác định tùy chỉnh là đầu ra có lệnh ném. Nếu bạn muốn nhập các lỗi đó vào một div thì hãy sử dụng phương thức innerHTML thay vì ném và trả về ngay lập tức từ hàm thực hiện.

0
konsole = document.createElement('ul'); 
konsole.id = 'console'; 
document.getElementsByTagName('body')[0].appendChild(konsole); 

    function log(konsole, message, level) 
    { 
     if (undefined === level) level = 0; 
     messageElem = document.createElement('li'); 
     messageElem.className = 'level-' + level; 
     messageElem.innerHTML = message; 
     konsole.appendChild(messageElem); 
    }; 


document.getElementById('console') 

log(document.getElementById('console'), ':)'); 

Sau đó, nó chỉ là về CSS ...

Các vấn đề liên quan