返回不起作用

时间:2009-04-27 21:22:04

标签: javascript firebug

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导致没有链接突出显示。这似乎最简单。

5 个答案:

答案 0 :(得分:6)

我认为“javascript:return ...”正在讲述。我相信你试图在锚点的href属性中返回一个值,如下所示:

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

Firebug没有告诉你这个位置的原因是因为它不在任何JavaScript中,而是在DOM中的单行内容。

答案 1 :(得分:4)

Javascript返回错误,因为return语句不在函数内部。可能的原因是函数定义不正确,例如:

myFunc() { some code; return; }

正确的代码定义是:

function myFunc() { some code; return; }

答案 2 :(得分:1)

我会冒险猜测这意味着你有一个额外的闭合支撑,或者缺少开口支撑。

您的代码库是否过于庞大,无法对每个返回函数进行抽查?你有一个IDE可以突出显示匹配的大括号吗?

答案 3 :(得分:0)

我在firebug中输入控制台窗口时得到了这个。 我写了一个for循环来搜索列表中的内容 不要尝试在那里返回一个值 - 只需将它分配给一个变量,你就可以在控制台中看到对象/值。

答案 4 :(得分:0)

Daniel Lew有dougfelt的答案,但是其他得到此错误的人也应该留意任何不存在于函数中的return语句。例如:

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

return false;不在任何函数之内,并会导致此错误。