Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Видимость переменных (снова) (https://javascript.ru/forum/misc/45635-vidimost-peremennykh-snova.html)

jozev 09.03.2014 08:02

Видимость переменных (снова)
 
Функция doOpen() открывает новое окно и заносит идентификатор этого окна в глобальную переменную win.
Функция doClose берёт этот идентификатор окна и закрывает его.
Но почему-то не работает, пишет "win is undefined", функция doClose() не видит переменную win...
Что не так понимаю? Как решить?
<a href="" onclick="doOpen('http://yandex.ru', 'namewin', 'width=300, height=200')">Window Open</a><br>
<a href="" onclick="doClose()">Window Close</a>

var win; // global var

function doOpen(url,name,properties)
{
    win = open(url,name,properties);
}

function doClose()
{
    win.close();
}

danik.js 09.03.2014 08:50

Потому что ты переходишь по ссылке. Атрибут href="" создает ссылку на текущую страницу. Не пиши атрибут вообще. Или используй псевдо-протокол javascript:

jozev 09.03.2014 09:41

Аха, ясно, спасибо. То есть можно сделать тремя вариантами:
1. <a onclick="doClose()">Window Close</a><br>
2. <a href="#" onclick="doClose()">Window Close</a><br>
3. <a href="javascript:doClose()">Window Close</a>

Верно?

danik.js 09.03.2014 09:49

Лучше всего <button onclick="doClose()">Close Window</button>
Если пишешь href (даже если #), то клик надо отменять: onclick="return doClose(), false"

jozev 09.03.2014 10:17

Ясно, спасибо.


Часовой пояс GMT +3, время: 16:42.