簡體   English   中英

我如何分配變量,如果

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM