用于onClick的Javascript 2函数

问题描述 投票:3回答:3

我是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" />

任何帮助都感激不尽。

javascript html javascript-events html-parsing
3个回答
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
投票

既然你说你是JavaScript的新手,那么我强烈建议使用一个好的JavaScript库,如jQuery,YUI,Dojo,Prototype等。有很好的库选择。这样的库将极大地简化您与DOM和浏览器事件模型的交互。我只建议不要对那些对JavaScript,DOM以及所有浏览器怪癖和不兼容性非常有经验的人使用JavaScript库。

如果由于某种原因不想使用库,请阅读:

What are some empirical technical reasons not to use jQuery?


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();
});
© www.soinside.com 2019 - 2024. All rights reserved.