2017-05-22 17 views
-1

Cでこのコード例を使用して上記のエラーが発生しました。使用される関数はsrc.jsにあります。私はWebUIのをロードすると、エラーがsomeFunction(のためにポップアップ表示されます)が、anotherFunctionは()だけで正常に動作:Onload not working:キャッチされていない参照エラー、関数が定義されていません

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

私がやろうとしている何を削除していますボタンをクリックしてオンロード機能に置き換えます。誰もがこのコードの何が間違っているか知っていますか?

+0

'function()'とは何ですか? –

+0

function()はsrc.jsで定義されていますか? src.jsがhtmlの同じディレクトリにある場合は、src = "src.js"を使用してください。 – Ollaw

+1

'function'は予約語です。 'function'という名前の関数を持つことはできません。 – rustyx

答えて

0

JavaScriptで、functionは、機能を作成するためのキーワードです。関数の名前として使用することはできません。 someFunction()fprintf(out, "<body onload=\"someFunction()\">\n");

としてそれを呼び出すために、あなたの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 
} 

に、あなたがいない文字列、 setTimeoutにパラメータとして関数を渡す必要があります。

+0

これは単なる例だったので、私は質問をより鮮明に編集しました。 – purry

+1

'src.js'と実際には' src.js'がどこにあるのでしょうか?ルートディレクトリ '/'にありますか? –

+0

src.jsは、cファイルと同じディレクトリにあります – purry

関連する問題