Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Если не вызвана функция.. (https://javascript.ru/forum/events/46582-esli-ne-vyzvana-funkciya.html)

cript 15.04.2014 19:29

Если не вызвана функция..
 
Приветствую!
По клику совершается функция, например
<a href="#" onclick="javascript:gofunction();">Click</a>
Подскажите как задать примерно такое условие:
Если функция не вызвана, то совершается действие..

Sweet 15.04.2014 19:55

Функция gofunction должна записывать в переменную, что выполнилась, и, если этой отметки нет - совершать действие.

cript 15.04.2014 20:25

Как то так?
<script>
function gofunction() {
var abc = '1';
}
if(!abc) {
alert('22');
}
if(abc != '') {
alert('OK');
}
</script>
<a href="#" onclick="javascript:gofunction();">Click</a>

Sweet 15.04.2014 20:36

Цитата:

Сообщение от cript
Как то так?

Очевидно же, что нет! Или то, что валится с ошибкой, не смущает? Оператор var делает переменную локально, её не видно вне gofunction.

cript 15.04.2014 20:40

Без var тоже не срабатывает

Erolast 15.04.2014 20:52

А с чего бы должно работать? Глобальные переменные в JS объявляются так:
window.somevariable = "somecontent"

Это во-первых. Во-вторых - зачем "javascript:" в обработчике? Пиши просто вызов функции.

Но я бы делал в функции return false в случае неуспешного выполнения, а в обработчике onclick соответствующую проверку. То есть,

<script>
function myFunc()
{
  if (1 > 5)
    return false;
  else
    return true;
}
</script>
<a href="#" onclick="if (myFunc()) {alert('Функция выполнена успешно');} else {alert('Что-то не так...');}">Ссылка</a>

cript 15.04.2014 21:12

Erolast,
Благодарю за ответ, но это все не то..
Понимаете, мне нужно начать выполнение другой функции, при условии, что предыдущая функция не была вызвана, то есть на ссылку не нажимали, значит совершаем действие..
Цитата:

Сообщение от Erolast
window.somevariable = "somecontent"

не срабатывает..

BETEPAH 15.04.2014 21:16

Цитата:

Сообщение от cript
По клику совершается функция

Цитата:

Сообщение от cript
Если функция не вызвана, то совершается действие

А как это может быть? Если по клику совершается функция, значит она вызвана же. Нет?

cript 15.04.2014 21:20

Цитата:

Сообщение от BETEPAH
Если по клику совершается функция, значит она вызвана же

Все верно

BETEPAH 15.04.2014 23:03

Ну, так что проверять-то? Если функция совершается, она вызвана. Если она не вызвана, то не совершается и ничего она сделать не может.
Или нужна проверка, что функция вызвана именно кликом по этой кнопке/ссылке? Ну поставьте в вызов в кнопке флаг и проверяйте его в функции.
<a href="#" onclick="javascript:gofunction(true);">Click</a>
<script>
function gofunction(flag) {
if (flag) //функция запущена кнопкой

Если нужна еще и защита от читеров, можно поставить в вызов this и проверять его...
В общем, не очень понятна суть задачи.

Sweet 15.04.2014 23:18

Цитата:

Сообщение от Erolast
Глобальные переменные в JS объявляются так:
window.somevariable = "somecontent"

Очень интересная версия. Только window - это ссылка на глобальный объект в браузерном js. Например, в ноде window нет. Так что же, там нельзя объявить глобальную переменную?
Переменная как свойство глобального объекта - это один из способов. Можно ещё без var объявить переменную или с var в глобальном окружении. Причём есть разница:
x = null;
var y = null;

delete x; // удалит
delete y; // не удалит

alert(["x" in this, "y" in this]);
Так-то!

cript 15.04.2014 23:26

Цитата:

Сообщение от BETEPAH
не очень понятна суть задачи.

Суть задачи такова. Совершаю действие, если конкретнее, то
function blur() {
$(window).blur(function() {
alert('!!!');
});
}
...
blur();

Вышеуказанная функция выводит сообщение, если пользователь пытается уйти со страницы. Нужно сделать так, чтобы при нажатии на определенную ссылку данная функция не вызывалась.. Если есть какие то предложения буду очень благодарен.

BETEPAH 16.04.2014 01:30

Цитата:

Сообщение от cript
Если есть какие то предложения буду очень благодарен

ну вон же
Цитата:

Сообщение от BETEPAH
Или нужна проверка, что функция вызвана именно кликом по этой кнопке/ссылке? Ну поставьте в вызов в кнопке флаг и проверяйте его в функции.


cript 16.04.2014 02:35

С флагом что-то не выходит..
мне нужно что то вроде этого
// Если ссылку не нажимали, то все остальное.. 
{
function blur() {
$(window).blur(function() {
alert('!!!');
});
}
...
blur();

Пробовал делать так, но видимо не то..
if(typeof gofunction !== 'function')

Vlasenko Fedor 16.04.2014 03:12

Пример вызова функции с различными параметрами
<a href="#" onclick="testme(1);">MyLink</a>
    <input type="button" value="Test" onclick="alert(testme());">
    <script>
      var testme = function(el) {
        if (el !== 1) return 5;// true;
          alert("Work");
          return false;
        }
    </script>

cript 16.04.2014 03:19

Poznakomlus,
Делаю примерно так же , но не срабатывает..
<script>
var go = function(el) {
if(el !== 1) {
function blur() {
$(window).blur(function() {
alert('!!!');
})
});
}
}
}
</script>
<a href="#" onclick="javascript:go(1);" target="blank">Click</a>

jsnb 16.04.2014 05:18

Цитата:

Сообщение от cript (Сообщение 307895)
С флагом что-то не выходит..

<!DOCTYPE HTML>
<html>
  <head>
  <meta charset="utf-8">
  <script src="http://code.jquery.com/jquery-1.11.0.min.js"></script>
  </head>
  <body>
  
<script>
var aClick = false;

$(window).blur(function() {
  if (aClick) {
    aClick = false;
    return false;
  }
  alert('!!');
});

</script>

<a href="http://ya.ru" onclick="aClick = true;" target="blank">Click</a>

  </body>
</html>

Erolast 16.04.2014 10:49

Цитата:

Очень интересная версия. Только window - это ссылка на глобальный объект в браузерном js. Например, в ноде window нет. Так что же, там нельзя объявить глобальную переменную?
Не занудствуй. Я прекрасно об этом знаю :) Просто данная формулировка наиболее понятна.
Цитата:

Можно ещё без var объявить переменную
Что не очень хорошо. Верней, совсем не хорошо. Во-первых, это создает путаницу, во-вторых - могут возникнуть непонятные баги.

cript 16.04.2014 16:54

jsnb,
Это то что нужно, спасибо тебе огромное!


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