2013-10-10 2 views
0

На моей веб-странице много кнопок отправки. Я пробовал:Как сделать несколько представлений на веб-странице с помощью javascript?

javascript:var x=document.getElementsByTagName("input"); 
for(var i=0;i<x.length;i++) { 
    if (x[i].type == 'submit') { 
     x[i].click(); 
    } 
}; 

Он начинает подавать, но делает это очень быстро. или много раз, моя веб-страница зависает. Я думал, что у меня есть пауза или сон. Я googled для и прочитал много потока в переполнении стека тоже. JavaScript не имеет паузы или сна. Есть несколько альтернатив, таких как «Тайм-аут», но многие люди предлагали не использовать его. Я понял, что не стоит пытаться сделать паузу или поспать между ними.

Итак, я из идей сейчас. Как я буду делать эти множественные отправки, один за другим? может ли кто-нибудь дать мне правильное направление? Заранее спасибо.

+0

Добавить тип возврата к нему или вернуть значение false или вернуть true, что поможет вам с моей точки зрения, очевидно, что это не очень хорошая идея. –

+0

Почему вы хотите сразу же нажимать кнопки отправки на странице? Обычно это не обязательно. – Oswald

+0

Зачем вам нужно несколько сообщений? Разве вы не можете сериализовать все входы на странице и отправить их сразу? –

ответ

0

попробовать с небольшой задержкой, 50 мс или так

javascript:var x=document.getElementsByTagName("input"); 
for(var i=0;i<x.length;i++) { 
    if (x[i].type == 'submit') { 
     setTimeout(function() { 
      x[i].click(); 
     }, 50); 
    } 
}; 
+0

Это не работает. Страница ничего не передает. – narayanpatra

0

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

Добавление произвольной задержки, например, 50 мс может быть достаточно, но на других это будет излишне длинным или недостаточно длинным.

В качестве альтернативы вы можете отправить свои данные с помощью AJAX, ожидая ответа. Это было бы более надежно, но поскольку каждый из них требует раунда и плюс время обработки, общее время отправки может увеличиться, скажем, от 100 мс до 1,5-2 секунд.

Сравните это с одним представлением, в котором все данные могут быть отправлены в первом представлении - 100 мс.

Смежные вопросы