Javascript变量范围帮助
这是我的代码,我担心一些变量的作用域没有正确确定Javascript变量范围帮助,javascript,Javascript,这是我的代码,我担心一些变量的作用域没有正确确定 <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8" /> <title>Memory Test</title> <link href="bio.css" rel="stylesheet" type="text/css">
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<title>Memory Test</title>
<link href="bio.css" rel="stylesheet" type="text/css">
<script src="../jquery-1.5.min.js" type="text/javascript"></script>
</head>
<body onLoad="timeMsg()">
<div id="container">
<h3>The numbers are...</h3>
<input id="number" type="text" value="495"/>
<div id="remember">
</div>
<div id="email">
<input id="a"></input>
<input id="b"></input>
<input id="c"></input>
<input id="d"></input>
<input id="e"></input>
<input id="f"></input>
<input id="g"></input>
<input id="h"></input>
<input id="i"></input>
</div>
<script>
var a = document.getElementById("a").value;
var b = document.getElementById("b").value;
var c = document.getElementById("c").value;
var d = document.getElementById("d").value;
var e = document.getElementById("e").value;
var f = document.getElementById("f").value;
var g = document.getElementById("g").value;
var h = document.getElementById("h").value;
var i = document.getElementById("i").value;
function timeMsg()
{
var t=setTimeout("alertMsg()",500);
}
function alertMsg()
{
document.getElementById('remember').innerHTML = ('<h3>Times up partner, what were they?</h3></br><input name="one" id="one" type="text"></input></br><input id="answer" type="button" value="Next" onClick="changeSet()"/>');
document.getElementById('number').value = 'no cheating...';
}
function changeSet() {
var s=setTimeout("alertYea()",500);
var a = document.getElementById('a').innerHTML = (document.getElementById("one").value);
document.getElementById('remember').innerHTML = ('<p id="bumper">2</p>');
document.getElementById('number').value = '9264';
}
function alertYea() {
document.getElementById('remember').innerHTML = ('<h3>Times up partner, what were they?</h3></br><input name="two" id="two" type="text"></input></br><input id="answer" type="button" value="Next" onClick="changeSet2()"/>');
document.getElementById('number').value = 'no cheating...';
}
function changeSet2() {
var a=setTimeout("alertYea2()",500);
var b = document.getElementById('b').innerHTML = (document.getElementById("two").value);
document.getElementById('remember').innerHTML = ('<p id="bumper">3</p>');
document.getElementById('number').value = '38671';
}
function alertYea2() {
document.getElementById('remember').innerHTML = ('<h3>Times up partner, what were they?</h3></br><input name="three" id="three" type="text"></input></br><input id="answer" type="button" value="Next" onClick="changeSet3()"/>');
document.getElementById('number').value = 'no cheating...';
}
function changeSet3() {
var a=setTimeout("alertYea3()",500);
var c = document.getElementById('c').innerHTML = (document.getElementById("three").value);
document.getElementById('remember').innerHTML = ('<p id="bumper">4</p>');
document.getElementById('number').value = '938263';
}
function alertYea3() {
document.getElementById('remember').innerHTML = ('<h3>Times up partner, what were they?</h3></br><input name="four" id="four" type="text"></input></br><input id="answer" type="button" value="Next" onClick="changeSet4()"/>');
document.getElementById('number').value = 'no cheating...';
}
function changeSet4() {
var a=setTimeout("alertYea4()",500);
var d = document.getElementById('d').innerHTML = (document.getElementById("four").value);
document.getElementById('remember').innerHTML = ('<p id="bumper">5</p>');
document.getElementById('number').value = '8351032';
}
function alertYea4() {
document.getElementById('remember').innerHTML = ('<h3>Times up partner, what were they?</h3></br><input name="five" id="five" type="text"></input></br><input id="answer" type="button" value="Next" onClick="changeSet5()"/>');
document.getElementById('number').value = 'no cheating...';
}
function changeSet5() {
var a=setTimeout("alertYea5()",500);
var e = document.getElementById('e').innerHTML = (document.getElementById("five").value);
document.getElementById('remember').innerHTML = ('<p id="bumper">6</p>');
document.getElementById('number').value = '02619815';
}
function alertYea5() {
document.getElementById('remember').innerHTML = ('<h3>Times up partner, what were they?</h3></br><input name="six" id="six" type="text"></input></br><input id="answer" type="button" value="Next" onClick="changeSet6()"/>');
document.getElementById('number').value = 'no cheating...';
}
function changeSet6() {
var a=setTimeout("alertYea6()",500);
var f = document.getElementById('f').innerHTML = (document.getElementById("six").value);
document.getElementById('remember').innerHTML = ('<p id="bumper">7</p>');
document.getElementById('number').value = '274619523';
}
function alertYea6() {
document.getElementById('remember').innerHTML = ('<h3>Times up partner, what were they?</h3></br><input name="seven" id="seven" type="text"></input></br><input id="answer" type="button" value="Next" onClick="changeSet7()"/>');
document.getElementById('number').value = 'no cheating...';
}
function changeSet7() {
var a=setTimeout("alertYea7()",500);
var g = document.getElementById('g').innerHTML = (document.getElementById("seven").value);
document.getElementById('remember').innerHTML = ('<p id="bumper">8</p>');
document.getElementById('number').value = '1681324849';
}
function alertYea7() {
document.getElementById('remember').innerHTML = ('<h3>Times up partner, what were they?</h3></br><input name="eight" id="eight" type="text"></input></br><input id="answer" type="button" value="Next" onClick="changeSet8()"/>');
document.getElementById('number').value = 'no cheating...';
}
function changeSet8() {
var a=setTimeout("alertYea8()",500);
var h = document.getElementById('h').innerHTML = (document.getElementById("eight").value);
document.getElementById('remember').innerHTML = ('<p id="bumper">9</p>');
document.getElementById('number').value = '48372605629';
emailData.data.value = h;
}
function alertYea8() {
document.getElementById('remember').innerHTML = ('<h3>Times up partner, what were they?</h3></br><input name="nine" id="nine" type="text"></input></br><p id="send"></p><input id="answer" name="submit" type="button" onclick="finals()" value="Next"/>');
document.getElementById('number').value = 'no cheating...';
}
function finals() {
var i = document.getElementById('i').innerHTML = (document.getElementById("nine").value);
document.getElementById('remember').innerHTML = ('<div id="send"><form action="mailto:hubridnoxx@gmail.com" method="POST" enctype="text/plain" name="emailData"></br><input id="data" type="text" size="20" name="data"><br><input type="submit" value="Submit and continue to letters!"></form></div>');
emailData.data.value = a + b + c + d + e + f + g + h + i;
var total= 0;
$('input', '#email').each(function () {
total += parseInt($(this).val());
});
emailData.data.value = total;
}
</script>
</div>
</body>
</html>
问题在于最后一行
emailData.data.value=a+b+c+d+e+f+g+h+i;
页面仅返回输入id i的值,而不返回输入id a-h的值。相反,对于每个输入id值,它会显示成吨的[object HTMLInputElement]。我甚至在打电话。价值。我怎样才能解决这个问题
emailData.data.value=a+b+c+d+e+f+g+h+i;
而是显示一组相应的值?每个范围只应使用一个var声明。那么像这样,
var a = document.getElementById("a").value,
b = document.getElementById("b").value; // and so on
如果愿意的话,还可以使用jQuery大大简化代码,这样就不必过多地使用document.getElementById,也不必为document.getElementById设置较短的变量
您还需要在另一个范围内重新声明一些全局变量,并尝试获取/设置文本输入的innerHTML。这是行不通的
function changeSet(){
var a = ...; // <- this line and others in other functions
}
它们真的是你的函数名吗?你的代码中有这么多document.getElementById调用。您应该使用一个速记函数来减少代码的大小。一个部分例外是作用域:不支持C风格的块级作用域,JavaScript具有函数级作用域。然而,JavaScript1.7支持使用let关键字进行块级范围界定。与C一样,JavaScript对表达式和语句进行了区分。与C语言在语法上的一个区别是自动插入分号,其中可以省略终止语句的分号。正如我所记得的,它有一些上下文范围…而不是9个全局变量,您至少可以为这些值使用一个全局数组。
function changeSet(){
var a = ...; // <- this line and others in other functions
}