2009-04-27 29 views
9

Firebug đang báo cáo lỗi "trả về không hoạt động" không có vị trí (tốt, dòng 1 không có gì). Làm thế nào tôi có thể theo dõi nguồn gốc của lỗi này?Trả lại không hoạt động

return not in function 
[Break on this error] return(0) 
javascript:return... (line 1) 

Tôi đang chạy FireBug 1.05 trên FF 2.0.0.20 trên Ubuntu.

Tôi tìm thấy một giải pháp mà làm việc (đối với cấu hình này):

var link = document.createElement('a'); 
    link.href='/'; 
    if (childSummary.more) { 
    link.onclick = capture(function(id) { follow(id); }, childSummary.id); 
    } else { 
    link.onclick = capture(function(id) { show(id); }, childSummary.id); 
    } 
    link.appendChild(document.createTextNode(name)); 
    div.appendChild(link); 

    [...] 

function capture(fn, val) { 
    return function() { fn(val); return false; }; 
} 

Mã này là trong một vòng lặp trong đó id đã được thay đổi, cần phải có chức năng chụp ảnh.

Trước đây, href là 'javascript: return 0' và chức năng chụp không trả về trực tiếp sai, thay vì sử dụng kết quả của fn, và có một đường dẫn khi nó trả lại giá trị tương đương với true. Href đã được đánh giá gây ra lỗi.

Xác định href là '#' hoặc '' khiến tất cả các liên kết xuất hiện như đã được truy cập. Không xác định được href nào khiến cho không có liên kết nào nổi bật. Điều này có vẻ đơn giản nhất.

Trả lời

6

Tôi nghĩ rằng "javascript: return ..." đang nói. Tôi tin rằng bạn đang cố gắng để trả về một giá trị trong href thuộc tính của một neo, như sau:

<a href="javascript: return false">Test</a> 

Lý do Firebug không nói cho bạn vị trí là bởi vì nó không có trong bất kỳ JavaScript, nhưng là khá trong một lớp lót trong DOM.

+0

Có vẻ như vậy. Tôi đang sử dụng javascript để tạo ra một liên kết với một chức năng onclick, và thiết lập các thuộc tính href của liên kết. Hàm onclick trả về false khi kết thúc hoạt động của nó và tôi nghĩ điều này sẽ ngăn không cho href được đánh giá. Vì điều này chỉ bắt đầu thất bại, tôi tự hỏi liệu có điều gì đó trước đó trong hàm onclick có hoạt động khác không. – dougfelt

+0

Chúng tôi có thể xem mã chính xác cho liên kết của bạn không?"Trở về sai" là okay bên trong của một onclick; nó ngăn chặn việc đánh giá href. Nhưng nếu bạn đang sử dụng nó theo cách này, bản thân href phải là một URL, chứ không phải JS. –

+1

Đây là một lời giải thích tốt cho cách sử dụng onclick để ngăn không cho neo được tải: http://www.javascripttoolbox.com/bestpractices/#onclick –

1

Tôi sẽ nguy hiểm khi đoán rằng điều này có nghĩa là bạn có thêm dấu ngoặc ôm hoặc dấu ngoặc mở bị thiếu.

Codebase của bạn có cấm lớn để kiểm tra tại chỗ xung quanh từng chức năng trả lại của bạn không? Bạn có một IDE nổi bật phù hợp với niềng răng cho bạn?

4

Javascript trả về lỗi vì câu lệnh trả về không nằm trong hàm. Một nguyên nhân có thể cho điều này là không chính xác định nghĩa hàm, chẳng hạn như:

myFunc() { some code; return; } 

nơi định nghĩa mã đúng là:

function myFunc() { some code; return; } 
0

tôi nhận này khi gõ vào cửa sổ giao diện điều khiển trong firebug. Tôi đã viết một vòng lặp for để tìm kiếm thứ gì đó trong danh sách không thử và trả về một giá trị trong đó - chỉ cần gán nó cho một biến và bạn có thể thấy đối tượng/giá trị trong bảng điều khiển.

0

Daniel Lew có câu trả lời cho điều khó khăn, nhưng những người khác nhận được lỗi này cũng nên tìm ra cho bất kỳ tuyên bố trở lại mà không cư trú trong một chức năng. Ví dụ:

<script type="text/javascript"> 
    alert("I'm JavaScript!"); 
    return false; 
</script> 

return false; nằm ngoài bất kỳ chức năng nào và sẽ gây ra lỗi này.

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