Javascript - 显示基于URL的测验问题

时间:2015-09-30 21:41:53

标签: javascript jquery

我在codepen http://codepen.io/anon/pen/dYNKJL

上设置了一个简单的javascript测验

每页显示一个问题,一旦您选择了答案,就可以转到下一个问题。无论选择什么答案,都会给出“活动”类,这样我就可以在测验结束时获得所有选定的答案。

每个答案都有一个数据测验索引为1或2.当我收集所有“活动”答案时,我可以看到他们是否回答了数据 - quizIndex为1(第一个答案),反之亦然。

无论如何,直到这一点,事情都很有效。但是,我现在正试图做别的事情。用户将通过链接定向到此测验,该链接将是以下之一

www.something.com/index.html?qa=0
www.something.com/index.html?qa=1
www.something.com/index.html?qa=2

他们来自的页面有一个他们可以回答的问题预览。使用javascript,我需要得到qa值,这不应该是一个问题。如果qa为0,则测验从问题1开始,不需要做任何事情。如果qa为1或2,则测验应从问题2开始,问题1的活动类应设置为li,其中包含data-quizIndex 1或data-quizIndex 2(取决于ga值)。

换句话说,如果他们从页面中回答问题一,将问题重定向到测验,我需要在主测验应用程序中回答问题。

这是可能的,如果是这样,实现这一目标的最佳方法是什么?

由于

1 个答案:

答案 0 :(得分:3)

您可以将location属性定义为if (typeof location.queryString === 'undefined') { Object.defineProperty(location, 'queryString', { get: function() { return location.search.slice(1).split('&').map(function(i) { var arr = i.split('='); var a = {}; a[decodeURIComponent(arr[0])] = arr[1] ? decodeURIComponent(arr[1]) : void 0; return a; }).reduce(function(a, b) { var key = Object.keys(b)[0]; a[key] = b[key]; return a; }); } }); } ,例如:

$(function() {
  var qa = location.queryString['qa'];
  if (qa === '1' || qa === '2') {
    $('.current .quiz-answer')[qa - 1].click();
  }
});

然后,您可以在加载页面时使用它,如下所示:

result

由于你想要模拟第一个问题得到解答,比重复代码更好的是模拟用户点击它。看一下你的updated codepen

更改查询字符串,然后重新加载它,你会发现它像魅力一样工作! :)