Javascript问题

时间:2011-03-15 00:24:02

标签: javascript scope

我会承认,当我写这篇文章时,我并没有直接思考......

                      记忆测试                                                  

数字是......

                         

        </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>
        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;
            }
        </script>

    </div>
</body>

问题出在最后一行,

emailData.data.value = a + b + c + d + e + f + g + h + i;

页面只返回输入id i的值,而不是输入id a-h。相反,它为每个输入id值显示大量[object HTMLInputElement]。我甚至打电话给.value。我该如何解决这个问题

emailData.data.value = a + b + c + d + e + f + g + h + i;

显示一组相应的值?

更新:

我在所有函数之前声明了以下变量:

        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;

现在我只回来了......

4 个答案:

答案 0 :(得分:2)

您的变量a-h在函数内声明,因此它们在这些函数之外不可用。您需要在函数体外部声明a-h,然后在函数内部设置它们的值。

答案 1 :(得分:0)

您已在行var i = document.getElementById('i').innerHTML = (document.getElementById("nine").value);中设置变量i。 i指的是变量i,而不是带有id i的控件。

你必须要做

var a = document.getElementById('number').value

编辑:啊,我看到你在你的方法中声明了一个......。请记住,var a仅适用于在其中声明的大括号内,因此通过执行var a=0等在脚本的开头声明它们。这称为变量的“范围”。

答案 2 :(得分:0)

在包含emailData.data.value = a + b + c + d + e + f + g + h + i;的函数中,i是您声明的唯一变量。您会注意到变量ab等未在该函数中声明或全局声明。

答案 3 :(得分:0)

是否允许使用jQuery,是否将总数传递给emailData.data.value?如果是这样,您可以在finals()函数中使用它:

var total= 0;
$('input', '#email').each(function () {
    total += parseInt($(this).val());
});
emailData.data.value = total;