ページが初めて読み込まれるときに、画像があるかどうかを確認しimage_array
、最後の画像を読み込む必要があります。
それ以外の場合は、プレビュー ボタンを無効にし、ユーザーに新しい画像ボタンを押すように通知し、画像を配置するための空の配列を作成します。
問題は、常に発生するimage_array
ことです。配列が存在する場合、配列はそれを上書きするだけですが、アラートは機能しません。else
if(image_array.length > 0)
$('#images').append('<img src="'+image_array[image_array.length-1]+'" class="images" id="1" />');
else{
$('#prev_image').attr('disabled', 'true');
$('#next_image').attr('disabled', 'true');
alert('Please get new image');
var image_array = [];
}
更新 HTML をロードする前に、次のようになります。
<?php if(count($images) != 0): ?>
<script type="text/javascript">
<?php echo "image_array = ".json_encode($images);?>
</script>
<?php endif; ?>
ベストアンサー1
if (typeof image_array !== 'undefined' && image_array.length > 0) {
// the array is defined and has at least one element
}
問題は、暗黙的なグローバル変数と変数の巻き上げが混在していることが原因で発生している可能性があります。var
変数を宣言するときは必ず以下を使用してください。
<?php echo "var image_array = ".json_encode($images);?>
// add var ^^^ here
そして、後でその変数を誤って再宣言しないように注意してください。
else {
...
image_array = []; // no var here
}