setTimeout的自定义用户输入

时间:2017-12-19 14:50:13

标签: javascript html

我是初学者学习Javascript,我需要一些帮助...... 我正在尝试制作游戏,我希望用户能够设置自己的时间。

我的代码如下:

HTML:

<div class='wrapper'>
<form id='nameForm'>
    <div class='form-uname'>
        <lable id='nameLable' for='nameField'>Create a username:</lable>
        <input id='nameField' type='text' maxlength='25'></input>
    </div>
    <div class='form-sub'>
        <button id='subButton' type='button'>Print your name!</button>
    </div>
</form>

<div>

JavaScript的:

function getUserName() {
var nameField = document.getElementById('nameField').value;

    alert(nameField);
}
var subButton = document.getElementById('subButton');
subButton.addEventListener('click', getUserName, false);

警报值正确!但是,当我将变量nameField放在下面的代码中而不是1000时(参见最后一行),它不起作用!

var Timer = window.setTimeout;
$shape.onclick = function(){
    window.clearTimeout(Timer);
    Timer = window.setTimeout(function(){
        $gameOverp.innerHTML = "You run out of time :( <br /> GAME OVER!";
        passedTime();
        $gameOver.style.display = "block";
        $shape.style.display = "none";
        $gameInfop.innerHTML = "TRY AGAIN!";
        $gameInfop.style.marginLeft = "280px";
}, 1000);

我知道我在函数中创建了nameField,但即使我在文件的开头创建它,它也不起作用。

当我使用x = 3000而我放x而不是1000时,它可以正常工作。

我希望你们能理解我的问题,如果你有任何问题我会乐意回答他们!

1 个答案:

答案 0 :(得分:0)

这里有一个数据类型的问题。超时功能需要数字数据类型(例如3000),默认情况下,您的变量是字符串(&#34; 3000&#34; - 请注意引号)。

您可以使用Number()函数将字符串转换为数字,如下所示:

nameField = Number(nameField);

但是,有一个更简单的解决方案:您可以更改输入类型来自&#39; text&#39;到&#39; number&#39;,它将验证数字输入并默认将值注册为数字数据类型。 MDN: HTML number input

有关数据类型的更多信息:MDN Javascript data types