如何分配变量if

时间:2011-02-27 11:23:16

标签: javascript

如何编写“如果操作发生则分配变量”。我写的是以下内容,但它总是返回1.谢谢

function openwindow(){
testWindow = window.open("popup.php");
setTimeout(function() { testWindow.close(); },1000);
if(testWindow !== null){
    var t = 1;
    return t;
}
}

4 个答案:

答案 0 :(得分:0)

试试这个:

if(testWindow != null){

抱歉,错了。你在做什么?当然它总是返回1.但你想要实现什么? setTimeout将被“设置”,然后立即执行下一行源代码,那么您期望什么?

答案 1 :(得分:0)

你想做什么?你正在测试open函数,浏览器每次打开一个窗口,所以返回“1”就可以了,不是吗?

N.B。:写出你的病情的更好方法是:

if (testWindow != null) {
  return 1;
} else {
  return 0;
}

或更简单:

return (testWindow != null) ? 1 : 0;

答案 2 :(得分: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);
}

答案 3 :(得分:0)

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中的函数将触发。

希望这很有用。