2016-09-19 3 views
0

Я использую javascript для ввода текста на свою веб-страницу в форме. Я использую цифры для моего теста, начиная с 1 и приращением от одного до 1000.Цитирование ввода javascript в html-форму

num=1 

while (num<1001){ 
    document.getElementById('numberIn').value=num 
    document.forms[0].submit() 
    num+1 
} 

Хотя это ставит в первое число (1) и представляет, он затем застывает и не в состоянии сделать что-либо дальше. Форма отправляется обратно на текущую страницу при ее отправке. Как я могу получить его для правильной петли, ввода 1, отправки, возврата назад на ту же страницу (пустой), ввода 2, отправки снова и т. Д. И т. Д.? Спасибо

ответ

2

Вы создали бесконечный цикл.

Вам нужно сделать num++ или num = num + 1 не только num+1

Вы не увеличивающиеся переменную, вы просто вычисляя, что Num + 1.

+3

Даже это не решает проблему 'form' будет представлен только один раз – Mairaj

+0

Это хорошая точка – Smeegs

+0

С этой глупой надзоре фиксированной, каким образом сценарий может переноситься, когда страница обновляется и вводит его снова? –

0

После отправки формы HTML-страница в основном обновляется, и это означает, что это число всегда будет 1, и вы будете только отправлять 1 всегда. Если вам действительно нужно отправить, но вам нужно отправить значения от 1 до 100, вам нужно будет сохранить значение num в cookie перед отправкой каждый раз, а затем увеличивать значение, читая его из файла cookie, это единственный способ. Используйте приведенные ниже функции для чтения и установки cookie

var createCookie = function(name, value, days) { 
var expires; 
if (days) { 
    var date = new Date(); 
    date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000)); 
    expires = "; expires=" + date.toGMTString(); 
} 
else { 
    expires = ""; 
} 
document.cookie = name + "=" + value + expires + "; path=/"; 
} 

function getCookie(c_name) { 
if (document.cookie.length > 0) { 
    c_start = document.cookie.indexOf(c_name + "="); 
    if (c_start != -1) { 
     c_start = c_start + c_name.length + 1; 
     c_end = document.cookie.indexOf(";", c_start); 
     if (c_end == -1) { 
      c_end = document.cookie.length; 
     } 
     return unescape(document.cookie.substring(c_start, c_end)); 
    } 
} 
return ""; 
} 

Помогите?

+0

Итак, мы добрались до этой части, любая идея, как это сделать? –

+0

@JimJamesy Я добавил код для чтения и записи в файл cookie, надеюсь, что это поможет – snit80

0

Попробуйте использовать SessionStorage, он сохранит номер даже при перезагрузке страницы.

$(document).ready(function() { 
     var num = 1000; 
    if (!sessionStorage['currentNo']) { 
     sessionStorage['currentNo'] = 0; 
    } 

     if(sessionStorage['currentNo']<= num) 
     { 
      document.getElementById('numberIn').value=sessionStorage['currentNo']; 
      sessionStorage['currentNo'] = sessionStorage['currentNo']+1; 
      document.forms[0].submit(); 
     } 

}); 
0

Любые причины не использовать AJAX Интересно?

С его помощью вы можете запросить или отправить информацию, не выходя из текущей страницы. В этом случае это звучит идеально. Мы можем программно заполнить ввод (-ы) на форме, представить ее, изменить элементы и отправить ее снова - столько раз, сколько нам будет угодно.

Вот пример реализации quick'n'dirty.

Он печатает на пульте 10 раз.

0 
1 
2 
3 
4 
5 
6 
7 
8 
9 

1. FormAction.html

<!DOCTYPE html> 
<html> 
<head> 
<script> 
"use strict"; 
function byId(id){return document.getElementById(id);} 

function myAjaxPostForm(url, formElem, successCallback, errorCallback) 
{ 
    var ajax = new XMLHttpRequest(); 
    ajax.onreadystatechange = function() 
    { 
     if (this.readyState==4 && this.status==200) 
      successCallback(this); 
    } 
    ajax.onerror = function() 
    { 
     console.log("AJAX request failed to: " + url); 
     errorCallback(this); 
    } 
    ajax.open("POST", url, true); 
    var formData = new FormData(formElem); 
    ajax.send(formData); 
} 
//////////////////////////////////////////////////////////////////////////////// 
window.addEventListener('load', onDocLoaded, false); 

function onDocLoaded(evt) 
{ 
    byId('goBtn').addEventListener('click', onGoBtn, false); 
} 

var curIter = 0, maxIter=10; 
function onGoBtn(evt) 
{ 
    byId('numberIn').value = curIter; 
    myAjaxPostForm('formAction.php', byId('mForm'), onAjaxDone); 

    function onAjaxDone(ajax) 
    { 
     console.log(ajax.responseText); 
     curIter++; 
     if (curIter < maxIter) 
     { 
      byId('numberIn').value = curIter; 
      myAjaxPostForm('formAction.php', byId('mForm'), onAjaxDone); 
     } 
    } 
} 
</script> 
<style> 
</style> 
</head> 
<body> 
    <button id='goBtn'>GO!</button> 
    <form id='mForm'> 
     <input type='number' id='numberIn' name='numberIn'/> 
    </form> 
</body> 
</html> 

2. FormAction.php

<?php 
    echo $_POST['numberIn'] . "\n"; 
?> 
0

Когда страница перезагружается, переменная Num повторно инициализирован равным 1. Таким образом, это делает бесконечный цикл обновления страницы. Используйте некоторый механизм постоянного хранения, например localStorage, чтобы сохранить значение переменной после обновления страницы, чтобы избежать этой проблемы.

if(localStorage.getItem("num") == null || localStorage.getItem("num") == 'null'){ 
    localStorage.setItem("num", 1); 
    num=Number(localStorage.getItem("num")); 
    while (num<1001){ 
     //debugger; 
     document.getElementById('numberIn').value=num; 
     console.log(num); 
     document.forms[0].submit(); 
     num++; 
    } 
    } 

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

reset = function(){ localStorage.getItem("num", null); } 
+0

Пожалуйста, отредактируйте его правильно с объяснением! –

0

попробовать это просто использовать sessionStorage, чтобы увеличить свою ценность даже вашей странице обновления. редактировать ваш sessionStorage к Num + 1, когда ваш Num еще меньше, чем ограничение

if (localStorage.getItem('completed') == "true") { 
    console.log('Completed'); 

    // do something here 
} else { 
    var num = (localStorage.getItem('num') == null) ? 1 : localStorage.getItem('num'); 
    num = parseInt(num); 

    if (num < 5) { 
    localStorage.removeItem('num'); 
    localStorage.setItem('num', num+1); 

    document.getElementById('numberIn').value=num 
    document.forms[0].submit(); 
    } else { 
    localStorage.setItem('completed',true); 
    } 
} 
Смежные вопросы