私は本当にこの問題に苦しんでいます。Javascriptの引数として関数を渡します。
function webcamupdate(webcamurl) {
alert("I am a function to update the webcam with the url "+webcamurl);
}
function countdown(callback) {
alert(callback);
setTimeout("callback()", 10000);
}
var theurl = "THIS IS THE URL";
countdown(function(){ webcamupdate(theurl); });
あなたが見ることができるように、私はカウントダウン機能をcontsructしようとしている(多くのコードがある、しかし私は基本的にちょうど掲示している)機能を実行します( - :
ここではコードですこの場合はウェブカメラを更新します)。関数は、次のcoundown関数の引数は、しかし警告(コールバック)を持っていない返す場合
すべてがOKに動作します -
機能(){webcamupdate(theurl)。 }
"webcamurl"が定義されていないため、webcamupdate関数が実行されたときにこのスクリプトはクラッシュします。実際に言う必要がどのような警告(コールバック)
は次のとおりです。 -
機能(){webcamupdate( "THIS ISは、URL"); }
つまり、関数で渡す前に引数 "theurl"を評価します。
任意のアイデアがはるかに
EDIT
をいただければ幸い私は、私は多分あなたは私のアラートではなく、機能を使用して誤解したと思う(私はちょうどそれをシンプルに保つためにしようとしていた!)
元のコードは次のとおりです(まだ切り詰められていますが、より良いアイデアが得られます)。カウントダウンを表示するには、秒単位でDOM要素をカウントダウン時間、および機能は、タイムアウト上で実行する - それは3つの引数を取ります -
function webcamupdate(url) {
document.getElementById("cruisecam").src=url+"&rand="+Math.random();
countdown(30,"Webcam",function(){ webcamupdate(url); });
}
function countdown(currentcount,displayelement,callback) {
var displaytext;
if (currentcount == 0) displaytext = displayelement+" is refreshing now";
else displaytext = displayelement+" updating in "+currentcount+" seconds";
if (trackingcountdown.hasChildNodes()) clearelement("trackingcountdown");
trackingcountdown.appendChild(document.createTextNode(displaytext));
if (currentcount == 0) {
countdown(currentcount,displayelement,callback)
}
else {
currentcount--;
var countdownparameters=currentcount+',"'+displayelement+'",'+callback;
setTimeout("countdown("+countdownparameters+")", 1000);
}
}
//The function is called on window loading with
//countdown(30,"Webcam",function(){ webcamupdate(url); });
//clearelement is another function (not listed) that clears the node.
基本的に、それは重要なカウントダウン機能です。
第3引数(関数)に独自の引数がない場合(例: webcam() - うまくいきますが、webcam( "webcampic.jpg")を追加しようとすると、webcam( "webcampic.jpg")ではなくwebcam(url)を実行しようとしているために動作しません。
明らかに、最も簡単な解決策は、URLをグローバル変数にすることですが、これは良い習慣ではなく、カウントダウンコードをjsファイルを通して他のページで使用することを止めてしまいます。 助けてください!
「実際にアラート(コールバック)が実際に言いたいことは...」これはJavaScriptの仕組みではありません。 – zzzzBov
だから、アラートがすべて言われ、終わったときに何を言わなければならないでしょうか? – arb