文档.返回undefined的输入元素的getElementById



我正在创建一个在多个页面上分裂的测验,我尝试使用javascript的get方法将每个问题的分数传递到下一页。

我使用一个名为gValue()的函数来获取url中前页的变量(称为"s"+页面编号),然后我想将这个变量(我称之为"score")添加到下一页的3个多项选择答案的值中,并一遍又一遍地复制整个过程。

我有一个问题,插入newscore到每个无线电输入字段的值。

我没有得到任何控制台错误也没有javascript错误,但我得到"undefined"当我想检查新值是否以正确的方式添加到表单中的每个输入元素。下面是我的第一页的代码,然后是第二页的代码,我想看到新值插入到表单中:

发送s1变量的第一页:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 
        <title></title>
        <link rel="stylesheet" type="text/css" href="style.css" />
        <meta name="keywords" content="" />
        <meta name="description" content="" />
        <meta name="robots" content="index, follow" />
        <meta name="googlebot" content="index, follow" />
    </head>
    <body>
        <div>Choose between<br />
            <form name="fo" method="get" action="part1.html">
                <input type="radio" name="s1" value="1" />one<br />
                <input type="radio" name="s1" value="2" />two<br />
                <input type="radio" name="s1" value="3" />three<br />
                <input type="submit" value="continuer" />
            </form>
        </div>
    </body>
</html>

第二页,我想提取s1的值,并将其添加到3个输入的值中,格式为:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 
        <title></title>
        <link rel="stylesheet" type="text/css" href="style.css" />
        <meta name="keywords" content="" />
        <meta name="description" content="" />
        <meta name="robots" content="index, follow" />
        <meta name="googlebot" content="index, follow" />
        <script type="text/javascript">
            <!--
            function subnewsc() {
                for (i = 1; i <= 3; i++) {
                    var score = gValue();
                    score = parseInt(score);
                    i = parseInt(i);
                    var newscore = score + i;
                    var doc = 'document.getElementById("a' + i + '")';
                    doc.value = newscore;
                }
            }

            function gValue() {
                var url = window.location.href;
                var qparts = url.split("?");
                if (qparts.length == 0) {
                    return "";
                }
                var query = qparts[1];
                var vars = query.split("&");
                var value = "";
                for (var i = 0; i < vars.length; i++) {
                    var parts = vars[i].split("=");
                    for (var f = 1; f <= 3; f++) {
                        var ss = "s" + f;
                        if (parts[0] == ss) {
                            value = parts[1];
                            break;
                        }
                    }
                }
                return value;
            }
            // -->
        </script>
    </head>
    <body>
        <div>choose between<br />
            <form name="fo" method="get" action="part2.html">
                <input id="a1" type="radio" name="s2" value="1" />one again<br />
                <input id="a2" type="radio" name="s2" value="2" />two again<br />
                <input id="a3" type="radio" name="s2" value="3" />three again<br />
                <input type="submit" value="continuer" />
            </form>
            <script type="text/javascript">
                <!--
                var boby = subnewsc();
                document.write(boby);
                //-->
            </script>
        </div>
    </body>
</html> 

我不知道为什么我得到undefined当我使用"婴儿"变量检查。我首先认为这是因为DOM,函数subnewsc()被调用得太早,所以元素还没有出现,但不应该是这样,因为我现在稍后调用它。

它似乎也与document.getElementById中id名称的性质无关,因为它应该是一个字符串(字符串加上一个数字成为字符串)

maybe

var doc = document.getElementById("a'+ i +'");

不带单引号

javascript可能有点古怪-代码中的空格可能导致此错误,这里是我所经历的一个例子,这里是我写的一个脚本:

<select id="mySelect" multiple="multiple"> <option>Apple</option>

当我运行这个javascript,并试图找到第一个孩子,得到错误消息说"未定义"然而,我从下面的行中删除了空格,并修复了它:

<select id="mySelect" multiple="multiple"><option>Apple</option>

请注意我是如何删除multiple和option之间的空格的

最新更新