Функция SetTimout, которая изменяет текст в текстовом поле - PullRequest
0 голосов
/ 02 ноября 2011

Это мой второй день, когда я вообще что-то делаю с javascript, поэтому я начинающий.Как гласит заголовок, я просто хочу изменить текстовое значение текстового поля с помощью функции settimeout.Я искал в Интернете и зашел в тупик.Это то, что я имею до сих пор:

    putftp.onclick = function () {
    var Text = document.getElementById("TextBox");


    function firsttext() {
       document.getElementbyID("TextBox").innerHTML = "This is the first test.";
       setTimeout("secondtest()",3000);
    }
    function secondtest() {
        document.getElementById("TextBox").innerHTML = "This is the second test.";
        setTimeout("thirdtest()",5000);
    }
   function thirdtest() {
        document.getElementById("TextBox").innerHTML = "This is the last test.";
    }
};

Я не уверен, что я использую правильный формат, или я даже где-то близок к тому, чтобы быть правильным.Я уверен, что все в порядке, за исключением document.getElementbyID ("textbox"). InnerHTML часть.Я бы подумал, что что-то там изменится, но это всего лишь мой второй день, так что я действительно не мог понять, что это за проблема.Заранее спасибо за помощь!

Ответы [ 3 ]

3 голосов
/ 02 ноября 2011

Чтобы изменить текст через 3 секунды после нажатия кнопки, введите:

putftp.onclick = function () {
    window.setTimeout(function() {
       document.getElementById("TextBox").value = "This is the first test.";
    }, 3000);
};

В вашем коде ошибки есть две ошибки, которые я исправил для вас:

  1. Предполагая, что TextBox является текстовым полем, вам нужно присвоить его value свойство, а не innerHTML.
  2. Правильное имя getElementById, а не getElementbyID.JavaScript чувствителен к регистру.

Чтобы изменить его снова через две секунды, вы можете добавить «вложенный» таймер:

putftp.onclick = function () {
    window.setTimeout(function() {
       document.getElementById("TextBox").value = "This is the first test.";
       window.setTimeout(function() {
           document.getElementById("TextBox").value= "This is the second test.";
        }, 2000);
    }, 3000);
};

Тестовый случай .

2 голосов
/ 02 ноября 2011

Очевидная проблема с кодом, который вы разместили, заключается в том, что вы не вызвали firsttest() -функцию. Таким образом, первый вызов setTimeout никогда не выполняется. Кроме того, вы можете улучшить свой сценарий, просто передавая сами функции, например: setTimeout(secondtest, 3000);

Во-вторых, поскольку вы уже получили элемент один раз, почему бы не сократить код, исключив некоторые из getElementById: s.

putftp.onclick = function () {
    var Text = document.getElementById("TextBox");

    function firsttext() {
        Text.innerHTML = "This is the first test.";
        setTimeout(secondtest, 3000);
    }
    function secondtest() {
         Text.innerHTML = "This is the second test.";
         setTimeout(thirdtest, 5000);
    }
    function thirdtest() {
         Text.innerHTML = "This is the last test.";
    }

    firsttext();
};
1 голос
/ 02 ноября 2011

Функции не определены при выполнении, поскольку передача строки приводит к ее выполнению в глобальной области видимости.Функции определены только внутри обработчика onclick.

Вы должны просто передать саму функцию и никогда не передавать строки.Кроме того, почему бы не использовать переменную Text?И вы должны начать процесс, выполнив первую функцию.

Как примечание: ваши имена text и test не очень хорошие;это легко неправильно понять.

putftp.onclick = function () {
    var Text = document.getElementById("TextBox");

    firsttext(); // start process

    function firsttext() {
       Text.innerHTML = "This is the first test.";
       setTimeout(secondtest, 3000);
    }

    function secondtest() {
        Text.innerHTML = "This is the second test.";
        setTimeout(thirdtest, 5000);
    }

    function thirdtest() {
        Text.innerHTML = "This is the last test.";
    }
};
...