Мой код javascript выходит из строя примерно через 5 циклов. Я новичок в js. Вероятно, это не сбор мусора

#javascript #browser

Вопрос:

Надеюсь, кто-нибудь из вас, ребята, сможет это решить. Я пишу игру, которая работает с колодой игральных карт. У меня есть все 52 карты, отсканированные в файлы изображений, а также обратная сторона карты (всего 53 карты). Карты регулярно меняются (после каждого раунда, который занимает всего 5-8 секунд).

Как вы сказали, есть кликабельные карточки с изображениями (показано в 2 строках ниже — обычно их 5, но для примера они сокращены). Нажатие на карту позволяет вам сбросить ее, что, конечно, переворачивает карту, чтобы показать, что она будет сброшена, или при повторном нажатии снова загружает карту. (процедура переворачивания карты не показана и не является прямой проблемой)

Когда вы нажимаете на карту, определенные вычисления выполняются в соответствии с правилами игры (НЕ ПОКАЗАНЫ), Это изменяет значения карты, изменяя изображение карты (изменяя первоначально отображаемый URL-адрес), что работает нормально примерно в течение 5 изменений. После этого браузер зависает. Я предполагаю, что сценарий использует слишком много памяти или что-то в этом роде, но я не уверен. У моей машины 64 гигабайта, так что это не сбой системной памяти.

Я попытался сначала спрятать карту, а затем перезагрузить . Я попытался установить для атрибута значение нет.. т. е. document.getElementbyId("card01").none

Как вы можете догадаться, я все еще новичок и изучаю javascript. Однако все остальное работает в игре.

 <!DOCTYPE html>

<input type = "image"
     onclick ="somethingclicked('card1')"
 id = "card01"
 
     < img src="cards/playingcardback.PNG" width = 200 > 
</button>

    <input type = "image"
     onclick ="somethingclicked('card2')"
 id = "card02"
 
     < img src="cards/playingcardback.PNG" width = 200 > 
</button>

<script>
 

// У меня также есть функция, которая захватывает новые карты после проверки, используется ли карта уже (это работает, но я сократил ее для примера здесь

 randomnumber = Math.floor((Math.random() * 52)   1);
if (usedcards[randomnumber] ==0)
{
usedcards[randomnumber] = 1; // add it to the list of used numbers
computercards[counter] = cards[randomnumber]; // Find the card name from cards[] and give it to the computer
counter  ; // Increase the number of cards the computer has to eventually jump out of the while loop
}
 

// После выхода из цикла выбора карт он публикует новые карты (в этом примере показано только 2).

 document.getElementById("card01").src = "cards/" playercards[0] ".PNG";
document.getElementById("card02").src = "cards/" playercards[1] ".PNG";
</script>
 

Комментарии:

1. document.getElementbyId("card01").none ничего не делает — тоже When you click a card … где код, который обрабатывает это? вы этого не показали, но именно в этом, как вы говорите, проблема — вы упоминаете какой — то «цикл выбора карт» — опять же, то, что вы не показали-вы на самом деле не показали ничего, что могло бы вызвать проблему, которую вы описали

2. Ваш html-фрагмент недопустим (закрывается </button> без открытия, <input> в элементе отсутствует окончание»>»…). Более того, что вы пытаетесь с этим сделать: > document.getElementById("card01").src ? Идентификатор «card01» установлен на входном элементе, и на нем нет src атрибута.

3. Упс. Не заметил немного </кнопки>, но да, это все еще работало. Что касается элемента src в document.getElementById(«card01»).src, я изменяю путь к файлу изображения, который является картой.

4. Яроманда Икс , Проблема не в рутине, которая выбирает новую карту. Проблема в том.. Браузер зависает примерно после 5 ходов обмена 5 картами с document.getElementById(«card01»).src = «cards/newcardname.jpg»; // Ну, он выбирает новое название карты, но вы понимаете, в чем дело. Он делает это с помощью списка того, что называется картой с 3 переменными… т. е. 3 бриллианта. Поэтому, если номер карты равен 3, а масть-бубны, это создаст имя файла 3diamonds.jpg. Таким образом, новый src является cards/3diamonds.jpg

5. Для тех, кто хотел получить код обработки при нажатии на карту…функция somethingclicked(id) { if (id ==»card3″) { document.getElementById(«card03″).src =»pokercards/playingcards_3h.PNG»; }