Не удается загрузить массив с двумя циклами for?

0

Я хочу создать простой массив в JavaScript, который будет использоваться позже в игре с ничьей. Массив будет генерировать строковые представления значений.jpg.

В настоящее время существуют два массива, которые инициализируют массив так, что формат будет

Example:    1h.jpg -- Ace
            2h.jpg -- two

h - сердце s - пространство c - клуб d - алмаз

Когда я нажимаю кнопку загрузки, хочу, чтобы массив загружался, а затем печатался на веб-странице с помощью кнопки на нем, но в настоящее время он удаляет текущую веб-страницу. Я хочу добавить его на оригинальную веб-страницу. В какой-то момент я буду использовать Canvas для отображения карт. Вторая часть кода - это то, как я хотел бы, чтобы оператор if загружал строки h, d, c, s в строку.

Мне действительно хотелось бы, чтобы оператор if в своем собственном методе имел одну строку кода, которая бы установила индекс массива со значением и затем вернулась к методу loadArray. Я не знаком с JavaScript в том, как он передает массивы взад и вперед между методами. Я думаю, что этот массив в какой-то момент должен быть глобальным в JavaScript, так что все методы, которые его используют, будут иметь доступ.

Код:

<!DOCTYPE html>
<html>
<body>

<button type="button" onclick="loadMyImageArray()">Load Image Array</button>    

<script>
    function loadMyImageArray() {
        var index = 1;
        var img = new Array();

        for (suit=0;suit<4;suit++)
        {
            for (card=1;card<=13;card++)
            {
                imgArray[index] = card.toString() + suit.toString() + ".jpg";
                document.writeln("Your Card is: " + img[index].toString());
                index++;
            }
        }
    }
</script>

</body>
</html>

Код: (что я действительно хочу, чтобы выражение IF выглядело)

                 for (card=1;card<=13;card++)
        {
        document.writeln("Card: " +card);
            if(suit==1) {
        document.writeln("IF 1");       
                imgArray[index] = card.toString() + 'h' + ".jpg";
            } else if (suit==2) {
        document.writeln("IF 2");   
                imgArray[index] = card.toString() + 's' + ".jpg";
            } else if (suit==3) {
        document.writeln("IF 3");   
                imgArray[index] = card.toString() + 'd' + ".jpg";
            } else if (suit==4) {
        document.writeln("IF 4");   
                imgArray[index] = card.toString() + 'c' + ".jpg";
            }

Новый код: (Это то, что у меня есть для нового кода, еще не добавляю элементы на исходную страницу)

      function loadMyImageArray() {
    var index = 1;
    var imgArray = new Array();
    var suits = ["h","s","d","c"];

    for (suit=0;suit<4;suit++)
    {
        for (card=1;card<=13;card++)
        {
            imgArray[index] = card + suits[suit] + ".jpg";
            document.writeln("Your Card is: " + imgArray[index].toString());
            index++;
        }
    }
}
  • 0
    Не используйте writeln , он перезапишет вашу текущую страницу, потому что он автоматически вызывает document.open и очищает ваш загруженный закрытый документ. Используйте createElement и appendChild для добавления узлов в DOM.
Теги:

3 ответа

0
Лучший ответ

Помимо вашей imgArray которую указывает JP, и используя writeln которого вы не должны делать, я думаю, что вы пытаетесь сделать, это сопоставить целое число suit с письмом для создания вашего имени файла. В этом случае это легко. Просто используйте массив!

var suits = ["h","s","d","c"];

for (suit=0;suit<4;suit++)
{
    for (card=1;card<=13;card++)
    {
         imgArray[index++] = card + suits[suit] + ".jpg";
    }
}

Если вы пытаетесь использовать writeln только для целей отладки, вместо этого используйте console.log который будет эхом на вашу консоль отладки (во многих браузерах f12 открывает консоль).

Здесь сценарий, который, я думаю, делает то, что вы пытаетесь сделать:

http://jsfiddle.net/EmTWS/

2

imgArray не определен. Это должно быть img

Кроме того, используйте Chrome и откройте Dev Tools. Эта синтаксическая ошибка появилась бы на консоли.

  • 0
    Я просто попробовал это, и я не видел, где это показывает ошибку. Это с клавишей F12, а затем внизу экрана, который покажет сообщение, где вы можете развернуть страницу и посмотреть другой контент.
0

Предполагая, что вы просто хотите построить массив, который выглядит так: ["1h.jpg", "2h.jpg"... "12d.jpg", "13d.jpg"]

Затем вы можете использовать эту функцию:

function loadMyImageArray() {
        var index = 0;
        var suits = ['h', 's', 'c', 'd'];
        var imgArray = new Array(52);

        for (suit=0;suit<4;suit++)
        {
            for (card=1;card<=13;card++)
            {
                imgArray[index] = card.toString() + suits[suit] + ".jpg";
                index++;
            }
        }
        return imgArray
    }

В моей консоли я получаю:

loadMyImageArray()
["1h.jpg", "2h.jpg", "3h.jpg", "4h.jpg", "5h.jpg", "6h.jpg", "7h.jpg", "8h.jpg", "9h.jpg", "10h.jpg", "11h.jpg", "12h.jpg", "13h.jpg", "1s.jpg", "2s.jpg", "3s.jpg", "4s.jpg", "5s.jpg", "6s.jpg", "7s.jpg", "8s.jpg", "9s.jpg", "10s.jpg", "11s.jpg", "12s.jpg", "13s.jpg", "1c.jpg", "2c.jpg", "3c.jpg", "4c.jpg", "5c.jpg", "6c.jpg", "7c.jpg", "8c.jpg", "9c.jpg", "10c.jpg", "11c.jpg", "12c.jpg", "13c.jpg", "1d.jpg", "2d.jpg", "3d.jpg", "4d.jpg", "5d.jpg", "6d.jpg", "7d.jpg", "8d.jpg", "9d.jpg", "10d.jpg", "11d.jpg", "12d.jpg", "13d.jpg"]
  • 0
    Консоль - это страница или в Google Chrome где-то есть настоящая консоль? Я новичок в веб-разработке.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню