Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Флаг функции как переменная (https://javascript.ru/forum/events/46860-flag-funkcii-kak-peremennaya.html)

cript 27.04.2014 06:45

Флаг функции как переменная
 
Приветствую!
Подскажите как из такого выражения onclick="newfunc(value)" достать value и присвоить его переменной, то есть
function newfunc() {
var abc = value;
var abcd = value1;
}

Aetae 27.04.2014 07:58

function newfunc(newvalue){
    var abc = newvalue;
}
Вот только это вопрос нифига не для форума. Это вопрос к самым первым главам любого учебника программирования. Причём даже не обязательно javascript.

ruslan_mart 27.04.2014 18:31

А какой смысл? Называйте сразу получаемый аргумент как Вам больше нравится.

function newfunc(abc) {

}

cript 27.04.2014 19:06

Цитата:

Сообщение от Aetae
function newfunc(newvalue){
    var abc = newvalue;
}

Это то понятно, а вот как сделать именно как я спросил?
То есть
newfunc(value)
newfunc(value1)
newfunc(value2)
function newfunc() {
var abc = value;
var abcd = value1;
var abcde = value2;
}

Aetae 27.04.2014 21:24

cript, функция вызывается каждый раз, соответственно исполняется каждый раз заново.
Можно изобразить что-то типа стека:
newfunc('value');
newfunc('value1');
newfunc('value2');
function newfunc(value) {
   if(!newfunc.stack) newfunc.stack = [];
   newfunc.stack.push(value);

   if(newfunc.stack.length<3) return;

   var abc = newfunc.stack[0];
   var abcd = newfunc.stack[1];
   var abcde = newfunc.stack[2];
   //работа с этими переменными
   alert([abc, abcd, abcde]);
}
но зачем?..

cript 27.04.2014 21:32

Цитата:

Сообщение от Aetae
но зачем?..

Не ужели так никто не пытался сделать? Как ни странно в поиске тоже ничего по этому поводу..
Вот например несколько ссылок
<a href="#" onclick="newfunc(value)">Click</a>
<a href="#" onclick="newfunc(value1)">Click1</a>
<a href="#" onclick="newfunc(value2)">Click2</a>
Они вызывают одну функцию, но имеют разное значение.
Цитата:

Сообщение от Aetae
function newfunc(value) {
   if(!newfunc.stack) newfunc.stack = [];
   newfunc.stack.push(value);
   if(newfunc.stack.length<3) return;
   var abc = newfunc.stack[0];
   var abcd = newfunc.stack[1];
   var abcde = newfunc.stack[2];
   //работа с этими переменными
   alert([abc, abcd, abcde]);
}

Это конечно не то..

jsnb 28.04.2014 06:13

Цитата:

Сообщение от cript (Сообщение 309538)
<a href="#" onclick="newfunc(value)">Click</a>
<a href="#" onclick="newfunc(value1)">Click1</a>
<a href="#" onclick="newfunc(value2)">Click2</a>
Они вызывают одну функцию, но имеют разное значение.

Ну так при вызове функции разные значения аргумента передаются. А куда эти значения складывать при вызове - это уже другой вопрос.
<!DOCTYPE HTML>
<html>
  <head>
  <meta charset="utf-8">
  </head>
  <body>

<script>
function newfunc(x) {
  var abc = x;
  alert(abc);
} 
</script>

<a href="#" onclick="newfunc(111)">Click1</a><br>
<a href="#" onclick="newfunc(222)">Click2</a><br>
<a href="#" onclick="newfunc(333)">Click3</a>

  </body>
</html>

Можно конечно написать код для получения всех аргументов с которыми функции вызываются на ссылках. Что-нибудь типо этого:
<!DOCTYPE HTML>
<html>
  <head>
  <meta charset="utf-8">
  </head>
  <body>

<script>
function newfunc() {
  var links = document.querySelectorAll('a[onclick^=newfunc]');
  
  var args = [];
  for(var i = 0; i < links.length; i++) {
    var onclickAttr = links[i].getAttribute('onclick');
    var arg = onclickAttr.match( /newfunc\((.+)\)/ )[1];
    args.push(arg);
  }

  var abc = args[0];
  var abcd = args[1];
  var abcde = args[2];

  alert(abc + ', ' + abcd + ', ' + abcde);
} 
</script>

<a href="#" onclick="newfunc(111)">Click1</a><br>
<a href="#" onclick="newfunc(222)">Click2</a><br>
<a href="#" onclick="newfunc(333)">Click3</a>

  </body>
</html>

Но это абсолютнейшее извращение и так делать не надо.
А вообще, раз такие странные вопросы возникают, то не мешало бы хотя бы основы подучить.

Aetae 28.04.2014 06:46

cript, ни хрена не понял.
Напиши чётко по пунктам от каких действий какого результата ты ожидаешь?

cript 28.04.2014 07:28

Цитата:

Сообщение от Aetae
от каких действий какого результата ты ожидаешь?

Вообще хотел сделать примерно так:
Кликаю по одной из ссылок
<a href="#" onclick="newfunc(111)">Click1</a>
<a href="#" onclick="newfunc(222)">Click2</a>
<a href="#" onclick="newfunc(333)">Click3</a>
Вызывается функция, которая с помощью ajax вызывает нужный файл, а уже внутри самой функции
if(value == '111')
...
if(value == '222')
...
if(value == '333')
...
и т.д..

Цитата:

Сообщение от jsnb
<script>
function newfunc(x) {
  var abc = x;
  alert(abc);
}
</script>
<a href="#" onclick="newfunc(111)">Click1</a><br>
<a href="#" onclick="newfunc(222)">Click2</a><br>
<a href="#" onclick="newfunc(333)">Click3</a>

Почему то если подставить буквы вместо цифр не срабатывает..
<script>
function newfunc(x) {
  var abc = x;
  alert(abc);
}
</script>
<a href="#" onclick="newfunc(opt)">Click</a>

jsnb 28.04.2014 07:31

Цитата:

Сообщение от cript (Сообщение 309565)
<script>
function newfunc(x) {
  var abc = x;
  alert(abc);
}
</script>
<a href="#" onclick="newfunc(opt)">Click</a>

Потому что переменная opt не определена. Пиши так:
onclick="newfunc('opt')"


Цитата:

Сообщение от cript (Сообщение 309565)
Вообще хотел сделать примерно так:
Кликаю по одной из ссылок
<a href="#" onclick="newfunc(111)">Click1</a>
<a href="#" onclick="newfunc(222)">Click2</a>
<a href="#" onclick="newfunc(333)">Click3</a>
Вызывается функция, которая с помощью ajax вызывает нужный файл, а уже внутри самой функции
if(value == '111')
...
if(value == '222')
...
if(value == '333')
...
и т.д..

Что значит "вызывает нужный файл"? Какой-то код аяксом подгружается или что? Ну а насчет твоих if вообще не понимаю в чем проблема. Так и пиши. Только вместо value имя переменной-аргумента которое было задано при создании функции. Например:
<!DOCTYPE HTML>
<html>
  <head>
  <meta charset="utf-8">
  </head>
  <body>

<script>
function newfunc(x) {
  if (x == 'aaa') {
    alert(111);
  }
  if (x == 'bbb') {
    alert(222);
  }
  if (x == 'ccc') {
    alert(333);
  }
} 
</script>

<a href="#" onclick="newfunc('aaa')">Click1</a><br>
<a href="#" onclick="newfunc('bbb')">Click2</a><br>
<a href="#" onclick="newfunc('ccc')">Click3</a>

  </body>
</html>


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