我真的很苦惱這個 - 確定我錯過了簡單的東西。在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倒計時功能(有更多的代碼,但是我剛纔發佈的基礎),這將運行一個函數(在這種情況下更新網絡攝像頭)10秒後。
所有工程確定,如果函數在coundown功能沒有參數,但是警報(回調)返回如下: -
功能(){webcamupdate(theurl); }
當webcamupdate函數以「webcamurl」未定義的方式運行時,這當然會崩潰腳本。
什麼警報(回調)實際需要說的是: -
功能(){webcamupdate( 「這是URL」); }
即它在評估參數「theurl」之前通過函數傳遞它。
任何想法,將不勝感激
編輯
我想你我使用警報,而不是一個功能,我也許誤導了(我只是想保持簡單!)
這裏是原始代碼(仍然減少,但給你一個更好的主意)。
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個參數 - 倒計時時間(秒)的DOM元素顯示倒計時,和的函數,在超時運行。
如果第三個參數(函數)不具有其自身的任何參數 - 例如攝像頭() - 它工作正常,但是當我們嘗試添加攝像頭(「webcampic.jpg」)時,由於試圖運行攝像頭(url)而不是攝像頭(「webcampic.jpg」)的功能,它不起作用。
顯然,最簡單的方法就是使URL一個全局變量,但這並不是很好的做法,將使用在其他頁面倒計時代碼通過js文件阻止我。 幫助!
「什麼警報(回調)實際上需要說...」這不是JavaScript的工作原理。 – zzzzBov
那麼當所有的說法和完成時,警報應該說什麼? – arb