如何編寫「如果發生動作則分配一個變量」。我寫了下面的,但它總是返回1.謝謝如何分配一個變量如果
function openwindow(){
testWindow = window.open("popup.php");
setTimeout(function() { testWindow.close(); },1000);
if(testWindow !== null){
var t = 1;
return t;
}
}
如何編寫「如果發生動作則分配一個變量」。我寫了下面的,但它總是返回1.謝謝如何分配一個變量如果
function openwindow(){
testWindow = window.open("popup.php");
setTimeout(function() { testWindow.close(); },1000);
if(testWindow !== null){
var t = 1;
return t;
}
}
試試這個:
if(testWindow != null){
對不起,錯了。你在做什麼?當然,它總是返回1.但是你想達到什麼目的? setTimeout
將被「設置」,然後立即執行下一行源代碼,那麼你期望什麼?
你想做什麼?你正在測試打開的函數,瀏覽器每次打開一個窗口,所以返回「1」是好的,不是嗎?
注:寫你的條件更好的方法是:
if (testWindow != null) {
return 1;
} else {
return 0;
}
或簡單:
return (testWindow != null) ? 1 : 0;
假設你想全局變量t
爲1,而窗口打開時爲0它關閉一秒後,這裏是更好的代碼:
var t = 0;
var testWindow = 0;
function openwindow() {
t = 1;
testWindow = window.open("popup.php");
window.setTimeout(function() { testWindow.close(); t = 0; }, 1000);
}
testWindow
當窗口關閉時,變量是一個對象,不會是!= null
。您應該使用testWindow.closed
屬性。但是,正如@Tim和@Shadow Wizard指出的那樣,超時將在代碼執行後觸發。
取決於你想做的事 - 你可以檢查窗口狀態如下:
var testWindow;// declared here so we can access it from outside the function.
function openwindow() {
testWindow = window.open("popup.php");
window.setTimeout(function() { testWindow.close(); }, 1000);
}
if (!testWindow) {
alert('testWindow hasnt been created by openwindow yet');
}
if (testWindow && !testWindow.closed) {
alert('testWindow is open');
}
if (testWindow && testWindow.closed) {
alert('testWindow is closed');
}
如果用戶在此之前關閉窗口,這也將正常工作。
更新:
只是爲了澄清 - 如果你得到這個已經原諒我。
不會是什麼的setTimeout說:
「在第二個執行該給定功能,但在執行這個代碼的其餘部分同時進行」。
所以你的函數將會完成執行,就好像setTimeout不存在一樣。稍後(1秒後),setTimeout中的函數將觸發。
希望這很有用。
閱讀關於window.closed:https://developer.mozilla.org/en/DOM/window.closed – johnhunter 2011-02-27 13:27:40
應該發生什麼「行動」? – 2011-02-27 11:35:06