Кнопка нажимается только один раз

90
12 июня 2021, 11:30

Я столкнулся с этой проблемой впервые, не могу найти конкретного решения.

Вот код:

var bet; 
var endGame; 
var i; 
var startGame; 
 
function getRandomFloat(min, max) { 
  return Math.random() * (max - min) + min; 
} 
 
function error(number) { 
  switch (number) { 
    case 1: 
      $("#result").text("Укажите сумму ставки."); 
      break; 
    case 2: 
      $("#result").text("Вы проиграли " + bet + "$"); 
      break; 
    case 3: 
      $("#result").text("Вы поставили " + bet + "$! Желаем удачи!"); 
      break; 
    case 4: 
      $("#result").text("Вы выиграли " + (bet * i).toFixed(0) + "$."); 
      break; 
    case 5: 
      $("#result").text("Игра уже идет!"); 
      break; 
 
  } 
} 
 
 
function bet() { 
  if ($("#betInput").val()) { 
    bet = $("#betInput").val(); 
    game(); 
    error(3); 
  } else { 
    error(1); 
  } 
} 
 
 
function game() { 
  i = 1.0; 
  endGame = getRandomFloat(1.0, 2.0); 
  endGame.toFixed(1); 
  startGame = setInterval(function() { 
 
    if (i < endGame) { 
      i = i + 0.1; 
 
      $("#count").text(i.toFixed(1)); 
    } else { 
 
      $("#count").text("1.0"); 
      clearInterval(startGame); 
      error(2); 
      i = 1.0; 
      endGame = undefined; 
      startGame = undefined; 
 
    } 
 
  }, 500) 
} 
 
 
 
function take() { 
 
  if (i < endGame) { 
    //Забрал лавэ. 
    $("#count").text("1.0"); 
    clearInterval(startGame); 
    error(4); 
    i = 1.0; 
    endGame = undefined; 
    startGame = undefined; 
 
  } 
 
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> 
<input id="betInput" type="text" /> 
<button class="button" onclick="bet()">Поставить</button> 
<div id="result"></div> 
<div id="count"></div>

Так вот эта кнопка отрабатывает лишь один раз, при повторном нажатии ошибка:

Uncaught TypeError: bet is not a function
at HTMLButtonElement.onclick (index.html:24)

Подскажите, пожалуйста, в чем проблема?

Answer 1
var bet;
bet = $("#betInput").val();

В этих строках ошибка. Сначала ты создаёшь переменную bet, потом создаёшь функцию bet, то есть в переменную скорей всего будет эта функция, а внутри функции ты присваиваешь значение в эту переменную, тем самым затираешь функцию, замени bet на что-то другое, должно заработать

READ ALSO
Vue ошибка Avoid mutating a prop directly

Vue ошибка Avoid mutating a prop directly

Учу VuejsПо событию клика на кнопке в дочернем компоненте вызываю метод, который передает событие в родительский компонент, затем в родителе...

98
gulp-responsive проблемы с обработкой svg

gulp-responsive проблемы с обработкой svg

Использую модуль gulp-responsive для изменения изображений, имею ошибку: Код:

99
Как с помощью lodash вытащить элемент

Как с помощью lodash вытащить элемент

Всем привет, не до конца разобралась с lodash Подскажите, пожалуйста как вытащить из данных элемент

88