如何编写“如果发生动作则分配一个变量”。我写了下面的,但它总是返回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