我在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值)。
换句话说,如果他们从页面中回答问题一,将问题重定向到测验,我需要在主测验应用程序中回答问题。
这是可能的,如果是这样,实现这一目标的最佳方法是什么?
由于
答案 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。
更改查询字符串,然后重新加载它,你会发现它像魅力一样工作! :)