我只开始学习如何重构代码,并且我在抽象一个简单函数时失败。我传递的参数为checkAnwser
和它的作品,但count
“丢失”函数不返回值
我不能让/追加 “计数” 在这里:
<input data-correctanswer="javascript" id="answer1" name="" type="text">This works fine (no special chars)
<br/>
<button id="btn1">check 1</button>
<br/>
<input data-correctanswer="jávascripté" id="answer2" name="" type="text">
<br/>
<button id="btn2">check 2</button>
<div style="border: 1px solid;" id="result"></div>
的Javascript:
$(document).ready(function() {
var count;
$('#btn1').click(function() {
checkAnswer($('#answer1').data('correctanswer'), $('#answer1').val());
$('#result').append('result: ').append(count); <-- does not read count
}); // end of click
$('#btn2').click(function() {
checkAnswer($('#answer2').data('correctanswer'), $('#answer2').val());
$('#result').append('result: ').append(count); // <-- does not read count
}); // end of click
function checkAnswer(coorAns, UserAnswer) {
var count = 0;
// var coorAns = $('input[type=text]').data('correctanswer');
// var UserAnswer = $('input[type=text]').val();
var mistakesAllowed = 1;
if (UserAnswer === coorAns) {
count = count + 2;
}
for (i = 0; i < coorAns.length; i++) {
if (coorAns.charAt(i) !== UserAnswer.charAt(i)) {
mistakesAllowed--; // reduce one mistake allowed
if (mistakesAllowed < 1) { // and if you have more mistakes than allowed
count = count + 1;
}
if (mistakesAllowed < 0) {
count = count - 2
break;
}
}
}
console.log('final count: ' + count);
return count;
}
});
您正在返回'count',但您并未将其存储在任何地方,您误解了变量范围以及函数返回值的工作原理。 – adeneo
你需要'var count = checkAnswer(args);' – adeneo
我想这就是我首先学习.slideDown()和.addClass()以及之后的实际编程。谢谢:) – Andrejs