1. ホーム
  2. javascript

[解決済み] 配列が空か存在するかをチェックする

2022-03-21 15:47:29

質問

初めてページをロードするとき、画像が 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; ?>

解決方法は?

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
}