Перейти к содержимому









Фотография
Нужна помощь

Знатокам jQuery как это реализовать ?



  • Авторизуйтесь для ответа в теме
Сообщений в теме: 9

#1 instagib

instagib
  • Platinum
  • Сообщений: 873
  • Регистрация: 16.09.2014
  • Заработано: 100 руб.
Репутация: 328

Награды: 27

  
  
  
  
  
  
  
  

Отправлено 14 Май 2021 - 13:25

Приветствую вас знатоки явы и  jQuery ! 

Возникла проблема над которой бьюсь 2й день, а именно вот что !

 

В процессе выполнения скрипта создаётся 3 переменных (go:to:ru) с индыксами на концах от 0 до 69 т.е.

go0=qqq

to0=www

ru0=eee

 

go1=eee

to1=rrr

ru1=ttt

.

.

.

go69=aaa

to69=sss

ru69=ddd

 

Далее иду на страницу с заполнением формы и кнопкой субмит

 

Screenshot-3.png

 

И тут загвоздка в том, что я не могу вставить все переменные по очереди, а точнее не знаю как это сделать !

Я знаю только как заносить по одной переменной с одним и тем-же индексом т.е. или все с индексом 0 или 1 или...69

 

Вот так 

$('input[name=email]').val('<getvar(go0)>'); $('input[name=password]').val('<getvar(to0)>'); $('input[name=cost]').val('<getvar(ru0)>'); $('form').eq(0).trigger('submit');

 

и так 70раз  ! И на каждый индекс переменной приходится добавлять строки меняя индекс итого 70 "лишних строк" код ужасен и нагружает !

 

Подскажите как "оговорить" в одной строке все индексы что-бы те вводились по очереди, но не имели такой объёмный код как у меня выходит !? решение должно быть именно на jQuery 


Сообщение отредактировал instagib: 14 Май 2021 - 13:26


#2 ray1978

ray1978
  • Premium
  • Сообщений: 553
  • Регистрация: 02.12.2013
  • Заработано: 71 руб.
Репутация: 242

Награды: 23

  
  
  
  
  
  
  
  

Отправлено 14 Май 2021 - 14:08

Сразу на вскидку, вам следует использовать цикл for

Внутри цикла будет меняться счётчик.
Этот счётчик и будет концовкой переменной.

Есть опасения, что не сработает, getvar, поскольку ему передается переменная, а в цикле мы получим строку "u0" ... "u69"
С getvar я сам не пользовался ещё.

Однако, если есть возможность эти три вида переменных представить в массивах ( три массива получится), тогда в цикле for вообще не потребуется getvar(). Мы будет передавать peremArr[inc],

//q
peremArr[0] = "qqq";
...
peremArr[69] = "aaa";

//u
peremArr2[0] = "sss";
...
peremArr2[69] = "bbb";


(let inc=0; inc<=69; inc++)
{
$().val( peremArr[inc] );
$().val( peremArr2[inc] );
}

$('form').eq(0).trigger('submit');

Сообщение отредактировал ray1978: 14 Май 2021 - 14:20


#3 instagib

instagib
  • Platinum
  • Сообщений: 873
  • Регистрация: 16.09.2014
  • Заработано: 100 руб.
Репутация: 328

Награды: 27

  
  
  
  
  
  
  
  

Отправлено 14 Май 2021 - 14:40

//q
peremArr[0] = "qqq";
...
peremArr[69] = "aaa";

//u
peremArr2[0] = "sss";
...
peremArr2[69] = "bbb";

 

 

тут уже более 140 строк получится а точнее 210 

+ я забыл сказать, что переменные всегда одни и те-же, но данные на них всегда разные это парсер т.е. переменная to0=всегда разные данные



#4 ray1978

ray1978
  • Premium
  • Сообщений: 553
  • Регистрация: 02.12.2013
  • Заработано: 71 руб.
Репутация: 242

Награды: 23

  
  
  
  
  
  
  
  

Отправлено 14 Май 2021 - 14:58

... Почему же получится больше более 140 строк получится а точнее 210 ???? ...

 

Это пример аналогии, как по другому можно сохранить свои данные из парсера

//q
peremArr[0] = "qqq";
...
peremArr[69] = "aaa";

//u
peremArr2[0] = "sss";
...
peremArr2[69] = "bbb";

 

Т.е.

Вы сейчас данные сохраняете, путем создания новых переменных, отличающихся "хвостиком"

u0 = "aaa"

u1 = "bbb"

u2 = "ccc"

u3 = "ddd"

 

тоже самое для переменной q

 

Я предлагаю значения хранить в массиве.

Каждый массив относится к одному виду переменной (u или q)

А значения будут храниться в ключах(порядке от 0 до 69) - в вашем случае - это "хвостики"

 

peremArr[0] = "qqq";
...
peremArr[69] = "aaa";

 

 

Поэтому, этот код не займет больше строк, чем у вас есть сейчас.

 

 

А вот, оптимизация будет как раз в кусочке кода

 

Ваш кусок

$('input[name=email]').val('<getvar(go0)>'); $('input[name=password]').val('<getvar(to0)>'); $('input[name=cost]').val('<getvar(ru0)>'); $('form').eq(0).trigger('submit');

...

...

$('input[name=email]').val('<getvar(go69)>'); $('input[name=password]').val('<getvar(to69)>'); $('input[name=cost]').val('<getvar(ru69)>'); $('form').eq(69).trigger('submit');

 

Но вы не хотите повторять эту строку 70 раз

 

 

Вот ее и заменяем на оптимизированный кусок кода

 

(let inc=0; inc<=69; inc++)
{

  // подставили значения в элементы формы из ранее подготовленных переменных, в которых сохранили нужные значения
    $().val( peremArr[inc] );
    $().val( peremArr2[inc] );

}

 

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

 

В любом случае, предложения по улучшению кода или иного решения можно показать если знать всю задачу

 

 

P.S.

Допускаю, что я не совсем верно понял задачу, что Вы описали в первом посте


Сообщение отредактировал ray1978: 14 Май 2021 - 15:14


#5 ray1978

ray1978
  • Premium
  • Сообщений: 553
  • Регистрация: 02.12.2013
  • Заработано: 71 руб.
Репутация: 242

Награды: 23

  
  
  
  
  
  
  
  

Отправлено 14 Май 2021 - 15:10

- Если это парсер, то зачем форма и нажатие кнопки submit?

- Если Вы хотите 69 раз нажать кнопку submit на форме, чтобы она отправила 69 раз какие-то данные куда-то?

(в этом случае, Вы хотите перед каждой отправкой /нажали submit/ чтобы скрипт подставлял в поля формы заранее готовые значения из переменных (go:to:ru)) ?



#6 instagib

instagib
  • Platinum
  • Сообщений: 873
  • Регистрация: 16.09.2014
  • Заработано: 100 руб.
Репутация: 328

Награды: 27

  
  
  
  
  
  
  
  

Отправлено 14 Май 2021 - 15:16

ray1978

 

(let inc=0; inc<=69; inc++)
{
    $().val( peremArr[inc] );
    $().val( peremArr2[inc] );

   

    $('form').eq( inc ).trigger('submit');
}

 

Как это записать в одну строку ? И сначала дjлжен быть именно $

Ведь так работать не будет ? !

 

 $().val( peremArr[inc] );  $().val( peremArr2[inc] ); $('form').eq( inc ).trigger('submit'); (let inc=0; inc<=69; inc++)

 

ray1978

...Вы хотите перед каждой отправкой /нажали submit/ чтобы скрипт подставлял в поля формы заранее готовые значения из переменных (go:to:ru)) ?...

 

Да именно так


Сообщение отредактировал instagib: 14 Май 2021 - 15:17


#7 ray1978

ray1978
  • Premium
  • Сообщений: 553
  • Регистрация: 02.12.2013
  • Заработано: 71 руб.
Репутация: 242

Награды: 23

  
  
  
  
  
  
  
  

Отправлено 14 Май 2021 - 15:32

Т.е. такая логика в скрипте

 

1. имеем наборы данных

- для email (0-69 каких-то значений)

- для password (0-69 каких-то значений)

- для cost (0-69 каких-то значений)

 

2. имеется форма на странице с полями для (email, password, cost)

и кнопка submit у формы

 

Вопрос, как должен работать скрипт

 

А)

- при открытии страницы на форме уже заполнились поля значениями из переменных ...0

- вы руками нажали кнопку submit

- данные отправились

- на форме подставились поля значениями из переменных ...1

- вы руками нажали кнопку submit

 

и так Вы повторяете эти действия 69 раз?

 

 

Б)

- при открытии страницы на форме имеется кнопка submit

- жмете на кнопку и алгоритм сам 69 раз отправит данные кудато-то

(данные возьмет из ранее подготовленных переменных)

 

В) ваш вариант?

 

 

 

 

P.S.

Задача должна быть решена только с javascript и jquery?

Иными словами, только на стороне клиента?(frontend)

 

Серверная часть (backend) не должен быть использован?

(php, например)


Сообщение отредактировал ray1978: 14 Май 2021 - 15:39


#8 instagib

instagib
  • Platinum
  • Сообщений: 873
  • Регистрация: 16.09.2014
  • Заработано: 100 руб.
Репутация: 328

Награды: 27

  
  
  
  
  
  
  
  

Отправлено 14 Май 2021 - 15:46

Вариант Б

70 раз выполняется одинаковая строка с разными хвостиками 

 

"$('input[name=email]').val('<getvar(url0)>'); $('input[name=password]').val('<getvar(name0)>'); $('input[name=cost]').val('<getvar(cost0)>'); $('form').eq(0).trigger('submit');

.

 

"$('input[name=email]').val('<getvar(url69)>'); $('input[name=password]').val('<getvar(name69)>'); $('input[name=cost]').val('<getvar(cost69)>'); $('form').eq(0).trigger('submit');

 

только на javascript и jquery !



#9 ray1978

ray1978
  • Premium
  • Сообщений: 553
  • Регистрация: 02.12.2013
  • Заработано: 71 руб.
Репутация: 242

Награды: 23

  
  
  
  
  
  
  
  

Отправлено 14 Май 2021 - 15:59

Ок.

 

только на javascript и jquery

 

 

 

Основная проблема в том, что когда форма отправляет данные, за этим следует обновление страницы,

и мы опять возвращаемся к первоначальному алгоритму.

 

Иными словами, заполнив поля формы значениями наших переменных ...0 и осуществив отправку ($('form').eq(0).trigger('submit'))

мы обновим страницу и опять получим скрипт с первоначальными настройками.

 

 

Идея заключается в том, чтобы после отправки, мы помнили, какой "хвостик" данных был отправлен на прошлом этапе,

чтобы на текущем отправить данные из "хвостик+1"

 

Но, где хранить этот счетчик?

 

Если мы должны решать задачу только на javascript и jquery, то придется использовать localStorage

 

Есть еще одна проблема.

- Вы хотите нажать на форме Отправить один раз - а форма должна сделать отправку 70 раз?

(по количеству данных в переменных u0...u69)

Если так, это усложняет решение, поскольку придется делать еще промежуточные переменные и хранить их

между отправками формы.

Мне даже кажется, такой подход (формулировка задачи) не совсем корректный.

 

 

 

Кстати, почему Вы делаете акцент на запись кода в одну строку?

 

 

P.S.

Эту задачу удобней решить в связке

(javascript и jquery) + ajax + php

 

Используя  (ajax + php)

страница обновляться не будет

данные будут оправляться через mail в php-скрипте

 

А в (javascript и jquery) все останется как сейчас и никаких счетчиков запоминать в localStorage не придется


Сообщение отредактировал ray1978: 14 Май 2021 - 16:06


#10 instagib

instagib
  • Platinum
  • Сообщений: 873
  • Регистрация: 16.09.2014
  • Заработано: 100 руб.
Репутация: 328

Награды: 27

  
  
  
  
  
  
  
  

Отправлено 14 Май 2021 - 17:09

ray1978

Кстати, почему Вы делаете акцент на запись кода в одну строку?

 

Потому что так требует сервис презентации таких скриптов !

 

Ладно спасибо за консультацию, буду думать !





Похожие темы Collapse

  Название темы Форум Автор Статистика Последнее сообщение

Количество пользователей, читающих эту тему: 3

0 пользователей, 3 гостей, 0 анонимных

×

Зарегистрируйся моментально!