Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Передача переменных из eventListener`a другой функции (https://javascript.ru/forum/events/64109-peredacha-peremennykh-iz-eventlistener%60-drugojj-funkcii.html)

Ch@r2411 20.07.2016 11:52

Передача переменных из eventListener`a другой функции
 
Уважаемые форумчане, помогите пожалуйста начинающему:

Задача - передача переменных, полученных от addEventListener - другой функции:

// Сбор значений с формы

var form = document.querySelector("form");

  form.addEventListener("submit", function(event) {
    
    event.preventDefault();
    
    var from = form.elements.from.value;
    var to = form.elements.to.value;

    });


  function soapRequest(){

  // Передать сюда переменные с введенными с формы значениями

  }


<form class="myform" action="#" method="post">
  
   <input  id="from" name="from" placeholder="From">
   <input  id="to" name="to" placeholder="To">
   <input type="submit" value="Search" onclick="soapRequest();">

  </form>


Благодарю за внимание!

Spass 20.07.2016 11:56

var form = document.querySelector("form");
 
  form.addEventListener("submit", function(event) {
     
    event.preventDefault();
     
    var from = form.elements.from.value;
    var to = form.elements.to.value;
 soapRequest(from, to);
    });
 
 
  function soapRequest(from, to){
 
  // Передать сюда переменные с введенными с формы значениями
 
  }


Можно в первой функции вызвать вторую и передать ей параметры

warren buffet 20.07.2016 18:43

ТС, пили кулстори целиком.

form.addEventListener("submit", function(e) {
    
    e.preventDefault();
    
    var els=this.elements;

    soapRequest(els.from.value,els.to.value)

});

warren buffet 20.07.2016 18:48

ТС не понимает базиса

Цитата:

от addEventListener - другой функции:
У листенера уже есть функция, она собственно та самая другая.

Например те же яйца вид сбоку:

var validate = function(event) {
    
    event.preventDefault();
    
    var els=this.elements;

    soapRequest(els.from.value,els.to.value)

};

form.addEventListener("submit", validate);


То есть зачем куда-то передавать набор переменных, если можно там же все решить.

ЗЫ откуда в validate берется event и this? Из вызываемой функции. Это надо понимать, что у "листенера" есть такой вот унутренний интерфейс, то есть метод:

.submit=function(event,this){}; или просто свойство .submit, это сейчас не важно

который просто перезаписывается функцией addEventLisnener, то есть она заменяет

.submit=function(event,this);

на

.submit=function(event,this){// тут дохера кошерного кода };

или на указатель функции

.submit=my_lovely_fynction

И когда событие сгорает, внутри извилин браузера делается вот так

.submit(event,this);

То есть функция запускается. Если никто не менял ее - событие остается незамеченным, а если поменяли - обрабатывается.


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