以前にこのコードで少し助けがありましたが、別の問題に遭遇しました。各関数内の変数を変更して、そのスコープ外で使用するにはどうすればよいですか?
私のコードの簡単な説明は次のとおりです。各 Web ページについて、要素の内容を取得し、それらを配列に挿入します。この後、配列を操作してメッセージを作成し、ブラウザにアラートを送信します。
HTML
<div id="insert"></div>
Javascript
$(document).ready(function() {
userid = 17320;
courseid = 4745;
allLessonsArray = script(userid, courseid);
function script(userid, courseid) {
var lessonInTopicSectionArray = new Array();
lessonInTopicSectionArray['Floods, external'] = 376;
var allLessonsArray = new Array();
$.each(lessonInTopicSectionArray, function(name, lesson) {
lastAttempt = 0;
url = '---------/learn/mod/lesson/report.php?id=' + lesson + '&action=reportdetail&userid=' + userid + '&try=' + lastAttempt;
var lessonArray = new Array();
$.get(url, function(data) {
var page = $(data);
$('tr.r1.lastrow td.cell.c0').html(page).each(function(index, content) {
score = parseInt(content.substr(content.length - 1));
lessonArray[index] = score;
});
allLessonsArray[name] = lessonArray;
});
});
return allLessonsArray;
}
var message = "";
$.each(allLessonsArray, function(name, lessonArray) {
if (!message) {
message = "<li>Lesson <b>" + name + "</b> scores are:</li>";
}
else {
message = message + "<li>Lesson <b>" + name + "</b> scores are:</li>";
}
probability = lessonArray[0];
humanImpact = lessonArray[1];
infrastructureImpact = lessonArray[2];
communityImpact = lessonArray[3];
training = lessonArray[4];
preparedness = lessonArray[5];
message = message + "<ul><li>Probability score: " + probability + "</li><li>Human Impact score: " + humanImpact + "</li><li>Public Health Infrastructure Impact score: " + infrastructureImpact + "</li><li>Community Impact score: " + communityImpact + "</li><li>Training score: " + training + "</li><li>Preparedness score: " + preparedness + "</li></ul>";
risk = (probability / 3) * ((humanImpact + infrastructureImpact + communityImpact + training + preparedness) / 15);
message = message + "<p>Risk of <b>" + name + "<b> is" + risk + ".</p>";
});
$('#insert').html(message);
});