我是初学者学习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
时,它可以正常工作。
我希望你们能理解我的问题,如果你有任何问题我会乐意回答他们!
答案 0 :(得分:0)
这里有一个数据类型的问题。超时功能需要数字数据类型(例如3000),默认情况下,您的变量是字符串(&#34; 3000&#34; - 请注意引号)。
您可以使用Number()
函数将字符串转换为数字,如下所示:
nameField = Number(nameField);
但是,有一个更简单的解决方案:您可以更改输入类型来自&#39; text&#39;到&#39; number&#39;,它将验证数字输入并默认将值注册为数字数据类型。 MDN: HTML number input
有关数据类型的更多信息:MDN Javascript data types