Интерпретатор Python будет читать функцию как полный блок. Я думаю об этом, читая его в два прохода, один раз, чтобы собрать его закрытие (локальные переменные), а затем снова превратить его в байтовый код.
Как я уверен, вы уже знали, что имя, используемое слева от '=', неявно является локальной переменной. Не раз я был пойман, изменив переменный доступ к + =, и это неожиданно другая переменная.
Я также хотел указать, что это действительно не имеет ничего общего с глобальной областью. Вы получаете то же поведение с вложенными функциями.
Вместо этого вы можете использовать localStorage, только когда пользователь очистит его, он снова получит всплывающее окно (то же самое с куки-файлами), но гораздо проще:
(function() {
var visited = localStorage.getItem('visited');
if (!visited) {
document.getElementById("popupp").style.visibility = "visible";
localStorage.setItem('visited', true);
}
})();
html:
<div id="popupp" style="visibility:hidden;">hi</div>
Таким образом вы получаете намного меньше кода. Надеюсь, это поможет.
Попробуйте это: в html: class="popupp"
измените на id="popupp"
и в javascript: document.getElementById("popupp").style.visibility = visible;
измените на document.getElementById("popupp").style.visibility = "visible";
Если целью является только показать его один раз, вы можете использовать пример на веб-сайте MDN в качестве начала.
if (document.cookie.replace(/(?:(?:^|.*;\s*)someCookieName\s*\=\s*([^;]*).*$)|^.*$/, "$1") !== "true") {
alert("Do something here!");
document.cookie = "someCookieName=true; expires=Fri, 31 Dec 9999 23:59:59 GMT; path=/";
}
http: // jsfiddle.net/daCrosby/pqb5baa5/
Изменить
Здесь он показывает вам div. Заметьте, я переместил стиль в CSS вместо встроенного в мой jsFiddle - гораздо лучший подход, чтобы попасть в зависание
if (document.cookie.replace(/(?:(?:^|.*;\s*)someCookieName\s*\=\s*([^;]*).*$)|^.*$/, "$1") !== "true") {
document.getElementById("popupp").style.visibility = "visbile";
document.cookie = "someCookieName=true; expires=Fri, 31 Dec 9999 23:59:59 GMT; path=/";
}
alert('Do something here!');
на что-то вроде этого: document.getElementById(
popupp ).style.visibilty = 'visible';
– alexandreferris
17 June 2015 в 18:44