[英]how do I assign a variable if
我該如何寫“如果發生動作則分配變量”。 我在寫以下內容,但始終返回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向導指出的那樣,超時將在代碼執行后觸發。
根據您要執行的操作-您可以如下檢查窗口狀態:
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中的函數。
希望這是有用的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.