2017-05-22 59 views
-1

我在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功能。有人知道這個代碼有什麼問題嗎?

+0

什麼是'function()'? –

+0

你確定function()是在src.js中定義的嗎? 如果src.js位於html的同一目錄中,則只需使用src =「src.js」 – Ollaw

+1

'function'是一個保留字。你不能有一個名爲'function'的函數。 – rustyx

回答

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,而不是一個字符串。

+0

這只是一個例子,所以我編輯的問題更清晰,謝謝 – purry

+1

請添加'src.js'和實際上'src.js'的位置?在根目錄下'/'? –

+0

src.js與c文件在同一目錄下 – purry

相關問題