您好我是Javascript的新手,所以请耐心等待。我有一个javascript测验,它收集答案并在测验结束时显示一个分数。分数是根据表单末尾的“onClick”命令计算得出的,然后我要将其解析为事件跟踪以进行Google分析。目前,当单击按钮时,如果我尝试将分数值解析为分析,则无法使用。如果变量是另一个定义的整数(具有固定值),则完全相同的方法可行。
这是我的代码:
var numQues = 5;
var numChoi = 3;
var url = location.href;
var score = 0;
var answers = new Array(5);
answers[0] = "Play your pet a CD";
answers[1] = "National PetLog database";
answers[2] = "Certain types of cancers";
answers[3] = "A few weeks";
answers[4] = "Up to 1 year";
function getScore(form) {
score = 0;
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;
}
}
}
}
form.score.value = score + "/" + numQues;
var correctAnswers = "";
for (i=1; i<=numQues; i++) {
correctAnswers += i + ". " + answers[i-1] + "\r\n";
}
form.solutions.value = correctAnswers;
}
function JavaScriptFunction(){
return(score);
}
,按钮为:
<input class="ScoreButton" onclick="getScore(this.form); pageTracker._trackEvent('Quiz', 'Petcare quiz', url, score);" type="button" value="Get score" />
任何帮助将不胜感激。谢谢。
答案 0 :(得分:2)
既然你说你是JavaScript的新手,那么我强烈建议使用一个好的JavaScript库,如jQuery,YUI,Dojo,Prototype等。有很好的库选择。这样的库将极大地简化您与DOM和浏览器事件模型的交互。我只推荐不使用JavaScript库给那些对JavaScript,DOM以及所有浏览器怪癖和不兼容性非常有经验的人。
如果您出于某种原因不想使用库,请阅读:
What are some empirical technical reasons not to use jQuery?
答案 1 :(得分:0)
您没有将值发送给跟踪器,请尝试以下操作:
<input class="ScoreButton" onclick="doStuff(this.form);" type="button" value="Get score" />
编辑:
function getScore(form) {
score = 0;
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 && currSelection.value == answers[i]) {
score++;
break;
}
}
}
return score;
}
function doStuff(form){
//calculate score
score = getScore(form);
//replace value
form.score.value = score + "/" + numQues;
//correct answers
var correctAnswers = "";
for (i=1; i<=numQues; i++) {
correctAnswers += i + ". " + answers[i-1] + "\r\n";
}
form.solutions.value = correctAnswers;
//send data to track
pageTracker._trackEvent('Quiz', 'Petcare quiz', url, score);
}
编辑:我重构了一下你的代码。也许这种方式有用或者可以找到错误的位置。
答案 2 :(得分:0)
您应该使用事件处理程序,而不是使用onclick属性。
<input id="score-button" type="button" value="Get Score">
然后在javascript ...
var scoreButton = document.getElementById('score-button');
scoreButton.addEventListener('click', myFuncOne(), false);
scoreButton.addEventListener('click', myFuncTwo(), false);
当然,正如其他建议所提到的那样,你应该使用jQuery这样的javascript库,它提供了许多工具,让你的生活更轻松。
在jQuery中,上面的代码可以简短......
$('#score-button').click(function() {
myFuncOne();
myFuncTwo();
});