【问题标题】:<script language="JavaScript"> Adding<script language="JavaScript"> 添加
【发布时间】:2014-07-17 09:31:09
【问题描述】:

这是我的 1/13 页代码。

我正在尝试进行测验,您可以转到下一页以获得下一个答案,这就是为什么我将 13 页链接在一起。

如果您之前的答案正确,我需要帮助将 % 的总数加到下一页/答案中。例如。

这个问题我答对了,总共应该是 8%(因为有 13 个问题,100 / 13 是 7.69230769231,但我猜它会四舍五入)。

无论如何,我希望下一页的答案是 8%,如果他们答对了……+8%。

<html><head><title>Quiz</title>

<style>

.parent {
   width: 150px; /* I took the width from your post and placed it in css */
   height: 75px;
}

/* This will style any <img> element in .parent div */
.parent img {
   height: 100%;
   width: 100%;
}

.parent img {
  padding-left: 605px;
}

body {
  text-align: center;
  padding-top: 100px;
  font-size: 20px;
  font-family: sans-serif,Verdana;
}

</style>

<script language="JavaScript">
<!--

var numQues = 1;
var numChoi = 3;

var answers = new Array(13);
answers[0] = "Ben Stuart";
answers[1] = "Imran Ali";
answers[2] = "Daniel Rooney";
answers[3] = "Brian Little";
answers[4] = "David Rocke";
answers[5] = "Pamela McElhaney";
answers[6] = "David Hooper";
answers[7] = "Steven Woodhouse";
answers[8] = "Somewhere Sunny";
answers[9] = "Phillip Cairney";
answers[10] = "Stuart Clark";
answers[11] = "Jon Maciness";
answers[12] = "He would not be a celebrity";

function getScore(form) {
  var score = 0*2;
  var currElt;
  var currSelection;

  for (i=0; i<numQues; i++) {
    currElt = i*numChoi;
    for (j=0; j<numChoi; j++) {
      currSelection = form.elements[currElt + j];
      if (currSelection.checked) {
        if (currSelection.value == answers[i]) {
          score++;
          break;
        }
      }
    }
  }

  score = Math.round(score/13*100);
  form.percentage.value = score + "%";


}

// -->
</script>
</head>

<body background="C:\Users\whittlej\Desktop\Website 1\wallpaper.jpg">


<form name="quiz">
1. Who was inspired to join IT because of computer games ?<br>
<input type="radio" name="q1" value="Ben Stuart">Ben Stuart<br>
<input type="radio" name="q1" value="David hooper">David hooper<br>
<input type="radio" name="q1" value="Imran Ali">Imran Ali<br>
<p>


<input type="button" value="Save" onClick="getScore(this.form)">
<input type="reset" value="Clear"><p>

<div class="parent">
<A HREF="imran.html"><IMG SRC="next.png" alt="Next"></a>
</div>
Score = <input type=text size=15 name="percentage"><br>

</body></html>

【问题讨论】:

  • 您的问题标题与其内容不匹配。其实,你的问题是什么?
  • 嗯,我是 javascript 的新手,因为我只做了 1 周。所以放轻松
  • 试图做#1 ...我得到了这里的代码internetraining.com/Templates/CKQuiz 但对其进行了定制,并认为如果我将问题和javascript分开,然后将它们放在单独的页面上它会起作用就像在一页上一样。但不,它没有

标签: javascript arrays add var


【解决方案1】:

我有点不清楚你在问什么.. 问题是如何将分数从一页传递到下一页?

所以你在第一页上得分 8%(比如说),你如何将它传递到下一页,所以如果你也做对了,那是 16%?

如果是这样,那么有几种方法可以做到这一点:

1) 将分数作为 URL 的一部分传递到下一页。例如,当转到下一页时,使用 URL:

http://server.etc/QuizPage2.htlp?scoresofar=8

使用 javascript window.location.searcxh 来获取 ? 之后的部分算出到目前为止的分数。

这样做的一个问题是它很容易作弊:人们只需编辑 URL 并提高他们的分数。

2) 使用 cookie 来维护分数。您可以只维护到目前为止的分数,也可以是每个问题的分数图。随着网页的变化,每个域都会维护 Cookie,因此您可以使用它们来维护一个状态,在这种情况下,您的分数到目前为止。请参阅 javascript 的 document.cookie 函数了解如何使用 cookie。 w3Schools cookies page

与选项 1) 相比,这不太“可破解”,但仍然不安全。人们可以发布自己的 javascript 来操作 cookie。

3) 使用一个会话变量(例如在 PHP 中),以便维护一个会话变量来保存迄今为止的分数。这可能是最好的方法。如何做到这一点是一个完整的单独讨论,但您可以使用 google 等轻松找到一些示例 PHP 会话变量代码。

如果您需要超级安全,请使用 HTTP。

4) 不要更改页面。将其全部列为一个网页,使用 javascript 不是为了继续下一个 poage,而是在用户完成测验时隐藏/取消隐藏正确的问题。

除非您在 cookie 或会话变量中保留当前分数(或每个问题的分数),否则如果用户刷新页面,状态将会丢失,他们将不得不重新开始测验。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-05-02
    • 1970-01-01
    • 2011-09-03
    • 1970-01-01
    • 2015-09-07
    • 1970-01-01
    • 2012-03-13
    相关资源
    最近更新 更多