画像パスを含む変数があります。JSON オブジェクトに対して受け取る整数値に応じて、この変数は異なるパスを取得するはずです。
ただし、以下の関数内の何らかの理由で、JSON オブジェクトが switch ステートメントに対して正しい整数を返すという事実を知っているにもかかわらず、変数に割り当てられたパスはグローバルに宣言されたパスのままです。以下のコードを見てください。
function spawnThumbnails() {
$.getJSON('scripts/get_thumbs.php', function(data){
$.each(data, function(thumb, thumbInfo){
var thumbimage;
// If I create local thumbimage var like so,
//the image below turns is undefined
// But if local thumbimage var is not declared,
// the value defaults to globally declared value of arctic.svg
var thumbtype = thumbInfo.type;
alert(thumbtype); // this will alert correct type (an integer)
switch(thumbtype){
case 1: thumbimage = 'graphics/thumbs/arctic.svg'; break;
case 2: thumbimage = 'graphics/thumbs/savan.svg'; break;
case 3: thumbimage = 'graphics/thumbs/trop.svg'; break;
case 4: thumbimage = 'graphics/thumbs/tundra.svg'; break;
case 5: thumbimage = 'graphics/thumbs/ocea.svg'; break;
}
$("#thumbtest").append('<img src="' + thumbimage + '">');
// returning as the default image or undefined
}); //end each
}); // end json
}
var thumbimage = 'graphics/thumbs/artic.svg'; // default image
// I have tried placing the function definition here as well,
// but there is no difference. Should there be?
spawnThumbnails();
私はJavaScript関数スコープなどに慣れていません。関数呼び出しとグローバル変数宣言の前に関数を宣言できるはずだと思うのは正しいですか?
また、spawnThumbnails 関数の宣言で "thumbimage" パラメーターを宣言する必要がないことも奇妙に感じます。実際、パラメーターを宣言すると、壊れます。しかし、これは新しいローカル変数を作成するためだと思いますよね?
助けてくれてありがとう!あらかじめ