У меня проблема. Есть две функции, которые я назначил двум кнопкам, каждый из которых будет всплывать, если щелкнуть. Во все времена будет только один всплывающий за раз (или так я желаю). Это то, что я сделал до сих пор:Нулевое значение для всплывающего окна
var ADD_TESTER_POPUP = null;
var DELETE_TESTER_POPUP = null;
// user clicks on Add Tester
function openAddNewTesterWindow(width, height)
{
//if no windows are open
if((ADD_TESTER_POPUP===null || ADD_TESTER_POPUP.closed) &&
(DELETE_TESTER_POPUP===null || DELETE_TESTER_POPUP.closed))
{
var left = (screen.width/2)-(width/2);
var top = (screen.height/3)-(height/3);
ADD_TESTER_POPUP = window.open("addNewTesterWindow.html", "", "scrollbars=1,
resizable=1, width="+width+", height="+height+", top="+top+", left="+left);
}
else
{
//error occurs at this if statement line only
//if add tester is already open
if((!ADD_TESTER_POPUP===null || !ADD_TESTER_POPUP.closed) &&
(DELETE_TESTER_POPUP===null || DELETE_TESTER_POPUP.closed))
{
ADD_TESTER_POPUP.focus();
}
//if delete tester is open
else if((ADD_TESTER_POPUP===null || ADD_TESTER_POPUP.closed) &&
(!DELETE_TESTER_POPUP===null || !DELETE_TESTER_POPUP.closed))
{
alert("Please close Delete Tester Window before adding tester.");
DELETE_TESTER_POPUP.focus();
}
}
} // openAddnNewTesterWindow(width, height)
// user clicks on Delete Tester
function openDeleteTesterWindow(width, height)
{
//if no windows are open
if ((ADD_TESTER_POPUP===null || ADD_TESTER_POPUP.closed) &&
(DELETE_TESTER_POPUP===null || DELETE_TESTER_POPUP.closed))
{
var left = (screen.width/2)-(width/2);
var top = (screen.height/3)-(height/3);
DELETE_TESTER_POPUP = window.open("deleteTesterWindow.html", "", "scrollbars=1,
resizable=1, width="+width+", height="+height+", top="+top+", left="+left);
}
else
{
//if delete tester is already open
if((ADD_TESTER_POPUP===null || ADD_TESTER_POPUP.closed) &&
(!DELETE_TESTER_POPUP===null || !DELETE_TESTER_POPUP.closed))
{
DELETE_TESTER_POPUP.focus();
}
//if add tester is already open
else if((!ADD_TESTER_POPUP===null || !ADD_TESTER_POPUP.closed) &&
(DELETE_TESTER_POPUP===null || DELETE_TESTER_POPUP.closed))
{
alert("Please close Add Tester Window before deleting tester.");
ADD_TESTER_POPUP.focus();
}
}
} // openDeleteTesterWindow(width, height)
Когда окно Добавить Новый тестер открыт первый, если пользователь пытается нажать на кнопку Delete Tester это предупредит пользователя. Когда окно «Удалить тестер» открывается, если пользователь пытается нажать кнопку «Добавить новый тестер», он предупредит пользователя.
Однако, если я открыл Delete Tester Window первый (обновляется/чистую страницу), и я нажимаю на кнопку Добавить новый тестер, ошибка будет происходить с указанием Uncaught TypeError: Cannot read property 'closed' of null
(Это использует инструмент отладчик для Chrome). Я указал в коде, где происходит ошибка, в первой функции. Любая помощь по этому поводу?