我有一个javascript函数,如果它是匿名的,可以正常工作,但当我将其更改为named时停止工作..为什么?
这是有效的代码:
setInterval( function(){
<% @root.children.all(:order => "idx DESC").each do |child| %>
var text2 = "<%= child.content %>";
var pjs = Processing.getInstanceById("mysketch2");
pjs.update(text2);
<% end %>
}, 3000)
以下代码不起作用..
<script>
var interval = setInterval(drawGraph(),1000);
function drawGraph(){
<% @root.children.all(:order => "idx DESC").each do |child| %>
var text2 = "<%= child.content %>";
var pjs = Processing.getInstanceById("mysketch2");
pjs.update(text2);
<% end %>
}
</script>
我得到'未捕获的TypeError:无法调用方法'更新'未定义'。最奇怪的部分是,我可以看到Processing.js窗口正在屏幕上绘制,但就是这样..随着工作版本(这篇文章中的第一个)一切都很好,窗口的内容也被绘制.. < / p>
我尝试将pjs放入drawGraph()函数之外的全局变量中,但没有运气...... 我错过了什么? 谢谢!
答案 0 :(得分:2)
应该是
setInterval(drawGraph,1000);
不是
setInterval(drawGraph(),1000);
此函数也应在setInterval
语句
答案 1 :(得分:2)
两段代码不等价:在第一段中,您将向setInterval函数传递对未命名函数的引用。在第二个片段中,您调用drawGraph(),然后将结果值传递给setInterval。
尝试:
var interval = setInterval(drawGraph, 1000);
并在调用setInterval之前移动drawGraph的定义。