JavaScript, setTimeout - PullRequest
       1

JavaScript, setTimeout

0 голосов
/ 19 октября 2018

Мне нужно создать текстовую форму для ввода на моей веб-странице, чтобы изменить значение setTimeout на основе пользовательского ввода в моем коде JavaScript во время его работы.Могу ли я это сделать, и если я могу, как я могу?

Я устал отправлять строку в свой бэкэнд из пользовательского ввода, а затем с помощью вызовов ajax назначить строку переменной в javascript, но это не работает из-завнутренний html является строкой, и когда я преобразовал его в int, он также не работает.

function getData() {
  var xhttp = new XMLHttpRequest();
  xhttp.onreadystatechange = function() {
    if (this.readyState == 4 && this.status == 200) {
       document.getElementById("idovalt").innerHTML =
       this.responseText;
    }
  };
  xhttp.open("GET", "toltes", true);
  xhttp.send();
}

Вот форма ввода:

var idovalt = 1000;

setTimeout(function(){ize()}, idovalt);

Ответы [ 2 ]

0 голосов
/ 19 октября 2018

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

var myInput = $("#timeoutDelay"),
    timeOut = null;


function setTimeOutOnInputChange(timeout) {
    timeOut = setTimeout(function () {
        console.log("Your code...");
        //Ize();
    }, timeout);
}

// I did not get why you are doing this, asynchronous call execute after the timeout function, thats why you need to wait until is ready to change de timeout, in case time out value comes from server and not for user input, otherwise it doesn't makes sense.
function getData() {
  var xhttp = new XMLHttpRequest();
  xhttp.onreadystatechange = function() {
    if (this.readyState == 4 && this.status == 200) {
       document.getElementById("idovalt").innerHTML = this.responseText;
       setTimeOutOnInputChange(parseInt(this.responseText)); // Assuming does not return an object
    }
  };
  xhttp.open("GET", "toltes", true);
  xhttp.send();
} 


myInput.change(function () {
    var val = this.value;
    if (timeOut != null) {
        clearTimeout(timeOut);
    }

    if (isNaN(val)) {
        console.error("Input is not a number");
    } else {
        setTimeOutOnInputChange(val);
    }    
});
0 голосов
/ 19 октября 2018

Строка или целое число не имеет отношения к делу.

HTML:

<input type="text" id="idovalt" value="1000">

JS:

function ize() {
  // do something
}

setTimeout(ize, document.getElementById('idovalt').value);

Если вы хотите написать некоторый код непосредственно впервый аргумент setTimeout (), код должен быть заключен в кавычки.

например,

setTimeout('alert("Hello!")', 1000);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...