Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/470.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从JavaScript传递后无法检索变量_Javascript_Html - Fatal编程技术网

从JavaScript传递后无法检索变量

从JavaScript传递后无法检索变量,javascript,html,Javascript,Html,我有3个html页面,其中2个页面分别有问题1和问题2。第三页显示了考试的分数。我已经设计了页面,现在我想跟踪用户分数。我不允许使用本地存储、cookies、数据库或会话。我假设传递变量来跟踪每个用户的答案,从一个html页面到另一个页面,而不使用本地存储、会话、cookie和数据库 现在在我的外部js文件中,有函数getAnswer1form,它存储用户答案并将数组传递给quick_2.html文件。我在网上找到了一个传递变量的示例,但在第二个名为getAnswer2form的函数中检索数组并

我有3个html页面,其中2个页面分别有问题1和问题2。第三页显示了考试的分数。我已经设计了页面,现在我想跟踪用户分数。我不允许使用本地存储、cookies、数据库或会话。我假设传递变量来跟踪每个用户的答案,从一个html页面到另一个页面,而不使用本地存储、会话、cookie和数据库

现在在我的外部js文件中,有函数getAnswer1form,它存储用户答案并将数组传递给quick_2.html文件。我在网上找到了一个传递变量的示例,但在第二个名为getAnswer2form的函数中检索数组并存储用户的第二个输入时遇到了问题。我该怎么办

HTML第1页: 第一页用户选择2个答案。一个简单的填空问题,并检索答案。正如你所看到的,我用正确的答案分配了正确的答案

我有一个外部js文件,其中包含存储答案和执行必要计算的函数。我将用户的答案存储在一个数组中。我调用了第一个函数:

  function getAnswer1(form) {
     var results = [];
     var a = [];
     var value;

     var checked = form.querySelectorAll("input[type=radio]:checked");

   if(checked.length<2) {
       alert('Please select an option');
          return;
        }
 else {
         var n = checked.length;
            for(var i=0;i<n;i++) {
            a.push(checked[i].value);
           }
       }
       results.push(encodeURIComponent('key')+'='+encodeURIComponent(a))
       location.href = 'quiz_2.html?'+results.join('&');
  }
第二个问题:

<div>
                <form>
                    <input type="radio" name="radio" value="correct" class="firstRow"> NASA.Gov
                    <input type="radio" name="radio" value="incorrect" class="secondRow"> Data.Gov <br>
                    <input type="radio" name="radio" value="incorrect" class="firstRow"> Facebook
                    <input type="radio" name="radio" value="incorrect" class="secondRow"> XYZ.net <br>

                    <input type="button" value="Submit & Next Question" onclick="getAnswer2(this.form)" class="firstRow">
                    <input type="button" value="Cancel & Clear Selection" onclick="clearOptions(this.form)" class="secondRow">


                </form>
           </div>
Javascript:

正如您在下面看到的,我应该接受用户的第二次测试输入,并向调查报告最终分数,但检索数组变量和存储答案有困难

function getAnswer2(form) {
    var value;
    var retrieveArray = {};
    var fs = location.search.replace('?', '').split('&');
    for(var i=0,l=fs.length; i<l; i++){
     var z = fs[i].split('=');
    retrieveArray[decodeURIComponent(z[0])] = decodeURIComponent(z[1]);
    }
    var checked =  form.querySelector("input[type=radio]:checked");
    if(!checked){
        alert('Please select an option');
       }
     else{
        value = checked.value;
      }
     location.href = "survey.html";
}

很抱歉,如果我的评论看起来很苛刻,但我是说新的程序员自己学习基本知识,而不依赖于提供的答案。只是为了证明这是可以做到的——我刚刚创建了三个HTML页面。在前两页中创建了一个表单,第一页中有问题1和问题2,第二页中有问题3,并使用html将表单值传递给下一页

然后在第二页和第三页上只使用JavaScript,我从URL中提取值并处理它们。在第二页,我重新使用了第1页中的值,思考这可能是如何实现的,以及为什么它有用,以便将所有三个值传递到第3页,然后第3页仅使用JavaScript获取这三个值,在页面上显示它们,如下面的代码部分所示,并计算正确答案的总数和百分比。请注意,我回答了问题,因此问题2不正确

请注意,我没有给出所使用的代码,但会给出页面的URL,以便您可以看到前两个页面的结果,然后开始思考我是如何实现这一点的

numbers1.html
numbers2.html?one=correct&two=incorrect
numbers3.html?one=correct&two=incorrect&three=correct

Question 1: correct

Question 2:incorrect

Question 3:correct

2/3

0.67% correct
我知道这不是一个传统的答案,但对于学习者来说,简单地要求提供答案并不理想,尤其是当我能够在10分钟内将三页纸拼在一起,从而获得结果时。如果你不去尝试,那么你将无法自学


一般说明:今天下午,我和两位论坛成员花了很多时间来帮助OP编写所需的代码——给出代码示例。所以这篇文章更多的是关于教学而不是提供答案。我希望我能有这样的老师来激发研究和理解,然后再简单地问答案。所以现在我已经说过了——请随意否决投票,但我支持我的理念,不会删除这个答案,只是为了不获得否决票。这个论坛必须是一个教学环境,同时也是一个代码库。

首先,我想确认我的理解。您希望在不使用任何类型的存储的情况下从一个页面传递分数到另一个页面。在这里,我建议您不要使用单独的页面,而是使用向导。您可以在一个页面中拥有所有数据。@Dhaval我不允许使用本地、会话、cookie或数据库。需要将变量从一页传递到另一页。我想到的唯一方法是将每个答案存储在数组中,并将数组变量从一个页面传递到另一个页面,以便在最后引用该数组来计算分数,我明白这一点。然而,我的观点来自你的基础。为什么要使用单独的页面,而您可以轻松地与向导集成和管理。这对你的目标来说也很容易。@Dhaval在一页上回答每个问题,并链接到下一页question@Dhaval每个页面都有一个问题和到下一个问题的链接。看起来你想把这个放在别处。现在你会删除这个吗?不,我回答了这个页面上的帖子,作为这个用户的答案。我怀疑它是一样的用户作为另一个,但它是一个具有相同问题的不同用户,例如另一个海报的同班同学。然后在另一个页面上发布相同的答案,以防是另一个用户。相同的答案-可能有两张海报。。。或者就是那个。顺便说一句-很抱歉,我没有意识到有人编辑了蹩脚的打字-我会在以后的帖子中更加准确,以防止你不得不清理我蹩脚的打字。谢谢,如果两个问题都是相同的,以至于两个问题都可以用相同的答案,那么也许应该这样做
复制另一个。我来看看。请注意,我们通常不鼓励多次发布同一内容,因为对同一内容的任何改进都需要重复。是的,我们在这里进行了大量的志愿编辑工作。
numbers1.html
numbers2.html?one=correct&two=incorrect
numbers3.html?one=correct&two=incorrect&three=correct

Question 1: correct

Question 2:incorrect

Question 3:correct

2/3

0.67% correct