用于更改文本框中文本的SetTimeout函数

时间:2011-11-02 14:44:25

标签: javascript asp.net visual-studio textbox settimeout

这是我用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 part。我认为会有一些改变,但它只是我的第二天所以我真的可能对这整个问题毫无头绪。感谢您的帮助!

3 个答案:

答案 0 :(得分:3)

要在按钮单击后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区分大小写。
  3. 要在两秒钟后再次更改,您可以添加“嵌套”计时器:

    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);
    };
    

    Live test case

答案 1 :(得分:2)

您发布的代码存在的明显问题是您没有调用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();
};

答案 2 :(得分:1)

执行时未定义函数,因为传递字符串会导致它在全局范围内运行。这些函数仅在onclick处理程序中定义。

你应该只传递函数本身,而不是传递字符串。另外,为什么不实际使用Text变量呢?你应该通过执行第一个函数来启动这个过程。

作为旁注,texttest的命名不是很好;它很容易被误读。

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.";
    }
};