Onload不工作:未捕获的引用错误,函数未定义

时间:2017-05-22 19:59:30

标签: javascript html c

我在C中使用此代码示例得到上述错误,使用的函数在src.js中。当我加载webui时,会弹出someFunction()的错误,但是anotherFunction()工作正常:

fprintf(out, "<script type='text/javascript' src='/src.js'></script>\n"); 
fprintf(out, "<body onload=\"someFunction()\">\n");
fprintf(out, "<button type='button' id='CheckButton' onclick='anotherFunction()'>Check</button></br>");

src.js:

var check = 0;
function someFunction()
{
    req=new XMLHttpRequest();
    req.onreadystatechange=yetAnotherFunction;
    req.open("GET","xxx",true);
    req.send();
    setTimeout("someFunction()", 3000);
}

function anotherFunction()
{
  if (!check) {
    check = 1;
    setButtonText('CheckButton', 'Stop Checking');
    someFunction();
  } else {
    check = 0;
    setButtonText('CheckButton', 'Checking');
  }
}

我要做的是删除按钮并将其替换为onload功能。有谁知道这段代码有什么问题?

1 个答案:

答案 0 :(得分:0)

在javascript中,function是用于创建函数的关键字。它不能用作任何函数的名称。

src.js中,将someFunction更改为

function someFunction() {

  console.log("someFunction")
  req = new XMLHttpRequest();
  req.onreadystatechange = yetAnotherFunction;
  req.open("GET", "xxx", true);
  req.send();
  setTimeout(someFunction, 3000);  // <== this is wrong
}

将其称为fprintf(out, "<body onload=\"someFunction()\">\n");

someFunction()中,您必须将函数作为参数传递给setTimeout,而不是字符串。