Нажатие кнопки ввода более одного раза в HTML5 - PullRequest
1 голос
/ 01 мая 2011

Я создаю игру в кости, используя HTML5 и JavaScript.

Я хочу, чтобы игрок мог выбирать кости с помощью щелчка мышью.Это остановит бросание костей.Игрок должен иметь возможность снова нажать кнопку игры в кости, что позволит снова бросить кости.

Я играл с кодом, и первый щелчок работает, а второй - нет.

Это ограничение одного нажатия на кнопку ввода или я должен использовать другой тег HTML, отличный от кнопки ввода?

Я хочу, чтобы игра воспроизводилась без перезагрузки экрана.

HTML5

<tr>
<th><input type="button" id="diceOne" onclick="selectDice(this.id,this.value)" value="0"></input></th>

<th><input type="button" id="diceTwo" onclick="selectDice(this.id,this.value)" value="1"></input></th>

<th><input type="button" id="diceThree" onclick="selectDice(this.id,this.value)" value="2"></input></th>

<th><input type="button" id="diceFour" onclick="selectDice(this.id,this.value)" value="3"></input></th>

<th><input type="button" id="diceFive" onclick="selectDice(this.id,this.value)" value="4"></input></th>
</tr>

Javascript

function selectDice(diceName,diceValue){
if (diceArray[diceValue][1]=="y"){
    alert(diceArray[diceValue][1]);
    document.getElementById(diceName).value = "Die now selected";
    diceArray[diceValue][1]="n";
    alert(diceArray[diceValue][1]); 
} 
else {
    alert(diceArray[diceValue][1]); 
    document.getElementById(diceName).value = "Die not selected";
    diceArray[diceValue][1]="y";
    alert(diceArray[diceValue][1]); 
}

}

Ответы [ 2 ]

1 голос
/ 01 мая 2011

Похоже, в вашем коде есть ошибка. Я думаю, что это то, что происходит:

  1. Вы нажимаете на первый кубик, что приводит к вызову selectDice, передаче id для diceName и значения для diceValue; или "diceOne" и "0" соответственно.
  2. По какому-либо пути оператора if, который следует, вы создаете document.getElementById (diceName), который собирается получить элемент ввода, по которому вы щелкнули (таким образом, в этом случае, первый элемент ввода), и изменить значение либо «Умереть сейчас не выбран», либо «Умереть не выбран». Здесь все идет не так.
  3. В следующий раз, когда вы нажимаете на этот кристалл, он вызывает selectDice и снова передает идентификатор для diceName и значение для diceValue ... за исключением этого времени, diceName равно "diceOne", а diceValue равно "Die now selected" , Поскольку у вас нет значения для индекса «Выбрано сейчас» в объекте diceArray, отсюда все идет вниз.

Я бы предложил попробовать этот код без строк «document.getElementById (diceName) .value = ...» и посмотреть, работает ли он тогда. Если вам действительно нужно изменить значение элемента input в вашем onclick, тогда я бы предложил либо не использовать встроенный onclick, либо передать литеральное значение, которое вы хотите для diceName и diceValue, например:

<input type="button" id="diceOne" onclick="selectDice('diceOne','0')" value="0"></input>    
0 голосов
/ 01 мая 2011

создайте переменные для каждой из этих кнопок и запускайте их как true / false для каждого клика в вашем javascript как условие, которое должно исправить ваш второй клик;)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...