[英]Using variable outside of jquery.click function?
我想在jquery .click函數之外調用局部變量totalYes。 為此,我應該將其設置為全局變量,對嗎? 最初,代碼如下所示:
var answers = [thing1, thing2, thing3, thing4, thing5, thing6, thing7, thing8, thing9, thing10, thing11, thing12];
var answers2 = [answers2array12items];
$("#submmit").click(function() {
var totalYes=0;
function checkAnswers() {
for(var i=0; i<answers.length; i++) {
var userAnswer = document.getElementById("b"+i).value.toLowerCase();
if (answers.indexOf(userAnswer.toLowerCase()) !== -1 || answers2.indexOf(userAnswer.toLowerCase()) !== -1) {
totalYes++;
$("#correcto").show();
} else {
$("#incorrecto").show();
}
}
}
checkAnswers();
alert(totalYes);
});
它工作正常,但是,我想在以下地方使用它:
$("total").click(function(){
alert(totalYes);
});
因此,我在函數外將totalYes設為“ global”。 新版本是:
var answers = [thing1, thing2, thing3, thing4, thing5, thing6, thing7, thing8, thing9, thing10, thing11, thing12];
var answers2 = [answers2array12items];
var totalYes = 0;
$("#submmit").click(function() {
function checkAnswers() {
for(var i=0; i<answers.length; i++) {
var userAnswer = document.getElementById("b"+i).value.toLowerCase();
if (answers.indexOf(userAnswer.toLowerCase()) !== -1 || answers2.indexOf(userAnswer.toLowerCase()) !== -1) {
totalYes++;
$("#correcto").show();
} else {
$("#incorrecto").show();
}
}
}
checkAnswers();
alert(totalYes);
});
但是在新代碼中,不是為每個正確答案在totalYes上加1,而是像這樣增加totalYes:“ 1,2,3,4,5,6,7,8,9,10,11,12”,增加為:“ 1、3、6、10、15、21、27、33、39、46、54”。 我試過從totalYes ++更改checkAnswers()內部的totalYes修飾符; 到totalYes + = 1 ;,但問題仍然存在。
另外,我想知道,為什么警報框每次都顯示兩次,而不是一次?
編輯:這是#total和#submmit的html和CSS:
<div class="nextsa1" id="total"><strong>TOTAL</strong></div>
<input type="button" id="submmit" value="GO">
您的代碼似乎在用戶每次輸入新答案時都被調用時搜索完整的答案列表。 因此,在每次調用時,對於當前和所有先前的答案,“單擊內部測試”處理程序都會成功,這說明了totalYes
變量的Delta模式。
補救措施:init totalYes
為0,作為Click Handler內的第一條指令。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.