2009-04-27 95 views
9

Firebug報告「沒有返回功能」錯誤,沒有位置(第1行沒有任何內容)。我如何追蹤這個錯誤的來源?返回不在功能

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

我在Ubuntu上運行FF 2.0.0.20上的FireBug 1.05。

我發現了一個溶液的作品(該配置):

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; }; 
} 

的代碼是在一個循環,其中ID是變化的,因此需要捕獲功能。

以前的href是'javascript:return 0',並且捕獲函數沒有直接返回false,而是使用fn的結果,並且在返回等價的true時存在一個路徑。正在評估href導致錯誤。

將href定義爲'#'或''導致所有鏈接顯示爲已經訪問過。根本不定義href導致沒有鏈接突出顯示。這似乎最簡單。

回答

6

我認爲「javascript:return ...」在說。我相信你想在一個錨的href屬性返回一個值,如下:

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

的Firebug的原因是不會告訴你的位置,因爲它不是在任何JavaScript,相反卻是在DOM中的單線程。

+0

看起來像。我正在使用javascript生成帶有onclick函數的鏈接,並設置鏈接的href屬性。 onclick函數在其操作結束時返回false,我認爲這會阻止對href進行評估。由於這只是開始失敗,我想知道如果在早期的onclick函數行爲有所不同。 – dougfelt 2009-04-27 21:41:24

+0

我們能否看到鏈接的確切代碼?「返回false」在onclick內是可以的;它會阻止href被評估。但如果你這樣使用它,href本身應該是一個URL,而不是更多的JS。 – 2009-04-27 21:48:13

+1

這是一個很好的解釋,說明如何使用onclick來阻止加載錨點:http://www.javascripttoolbox.com/bestpractices/#onclick – 2009-04-27 21:49:21

1

我會冒險猜測這意味着你有一個額外的右大括號或一個缺少的大括號。

您的代碼庫過大,無法對每個返回函數進行抽查嗎?你有一個IDE來突出顯示你的配對括號嗎?

4

由於return語句不在函數內,所以Javascript返回錯誤。一個可能的原因,這是不正確的函數定義,如:

myFunc() { some code; return; } 

在正確的代碼定義是:

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

我打字到螢火蟲控制檯窗口時得到這個。 我寫了一個for循環來搜索列表中的東西 不要嘗試並在那裏返回一個值 - 只要將它分配給一個變量,並且您可以在控制檯中看到對象/值。

0

Daniel Lew對於dougfelt有答案,但其他得到這個錯誤的人也應該關注任何不在函數中的返回語句。例如:

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

return false;任何功能之外,並會導致此錯誤。