function checkscore() {
var array1 = new Array();
var array2 = new Array();
var score = 100;
var n = 0;
var answers = $("input:checked");
for (var i = 0; i < answers.length; i++) {
array1[i] = (answers.eq(i).next("span").text()).split(".")[1];
}
console.log(array1);
$.ajax({
type: "GET",
url: "../php/test.php",
datatype: "JSON",
data: {
pointID: 1
}
}).done(function (data) {
var data = jQuery.parseJSON(data);
if (data.status != 200) {
alert('wrong!');
return;
} else {
data = data.data;
var ca = JSON.parse(data[0].testJSON);
for (var i = 0; i < ca.length; i++) {
array2[i] = ca[i].right;
n++;
}
console.log(array2);
console.log(n);
for (var i = 0; i < n; i++) {
if (array1[i] != array2[i]) {
score = score - (100/n);
}
}
score = Math.round(score);
console.log(score);
alert('您的分数为:'+score+"分");
}
});
}
不知道为什么<pre name="code" class="javascript"> console.log(array2);
console.log(n);
<span style="font-family: Arial, Helvetica, sans-serif;">这两行必须写在done函数里面,写在外面的话就什么都没有,我done函数里面应该给局部变量array2和n都已经赋值了才对,在done函数之外两个变量赋的值就没了</span>
<span style="font-family: Arial, Helvetica, sans-serif;">
</span>
<span style="font-family: Arial, Helvetica, sans-serif;">
</span>
<span style="font-family:Arial, Helvetica, sans-serif;">已解决:ajax要慢于网页的加载速度,当ajax未执行完毕时,array2和n都是没有被赋值的,读取网页时先输出了array2和n自然就没有值了</span>
转载请注明原文地址: https://ju.6miu.com/read-1202316.html