2012-03-08 3 views
0

Я создаю простое приложение для головоломки и iPad с помощью JavaScript library для перетаскивания фигур. Я не могу понять, как проверить, все ли фигуры находятся в правильном месте.Подсчет событий в JavaScript

То, что я получил до сих пор

// create the draggable puzzle piece 
var p1=document.getElementById('piece1'); 
new webkit_draggable(p1); 
p1.className = 'ps1'; 

// create an array to count the pieces placed correctly 
var countArray = new Array(); 

// create the dropspot, link it to the puzzle piece and add an element to the array to count. Finally kill the dropspot 
var p1p1 = webkit_drop.add('droppiece1',{accept : ['ps1'], onDrop : function(){countArray.push("a");webkit_drop.remove('droppiece1')}}); 


// piece has been placed correctly. 
if(countArray.length = 1){ 
alert('Piece placed correctly'); 
}; 

Проблема у меня в том, что предупреждение от функции подсчета пожаров немедленно. Как я могу это исправить?

ответ

5

Измените последние три строки:

// piece has been placed correctly. 
if(countArray.length == 1){ 
alert('Piece placed correctly'); 
}; 

Вы пытались назначить вместо проверки на равенство.

Редактировать: Итак, он по-прежнему не работает на вас? Мне кажется, что вы настраиваете прослушиватель onDrop, но затем сразу после того, как вы это сделали (предположительно до того, как событие onDrop когда-либо срабатывает) вы проверяете, что что-то было «сброшено». Посмотрите, как это не сработает? Если вы просто хотите увидеть, что событие действительно срабатывает, и что «a» на самом деле нажата на ваш массив, вы можете переместить последние три строки внутри вашего обратного вызова. Как так:

// create the draggable puzzle piece 
var p1 = document.getElementById('piece1'); 
new webkit_draggable(p1); 
p1.className = 'ps1'; 

// create an array to count the pieces placed correctly 
var countArray = new Array(); 

// create the dropspot, link it to the puzzle piece and add an element to the array to count. Finally kill the dropspot 
var p1p1 = webkit_drop.add('droppiece1', {accept: ['ps1'], onDrop: function() { 
    countArray.push("a"); 
    webkit_drop.remove('droppiece1'); 

    // piece has been placed correctly. 
    if (countArray.length == 1) { 
     alert('Piece placed correctly'); 
    } 
}}); 

Я на самом деле не проверял это, но вот версия со всеми WebKit материал вынимают и капли заменены простым нажатием кнопки: http://jsfiddle.net/kajic/snJMr/1/

Если нажать на красную коробку , это то, что вы ожидали от своего приложения ipad, когда вы бросаете кусок?

+0

Правильно! Извините, это глупо от меня. Я попытался использовать ==, но теперь предупреждение не срабатывает вообще. Спасибо за быстрый ответ. –

+0

По-прежнему не повезло? См. Мое редактирование. –

+0

Проверяя это завтра, но я думаю, что у вас там что-то есть. Я могу проверять счет каждый раз, когда часть размещена правильно. Когда все будет установлено правильно, загорится предупреждение. Если я его правильно прочитаю. Спасибо большое! –

4

Вы должны изменить

if(countArray.length = 1){ 

в

if(countArray.length == 1){ 
        // ^^ use comparison, not assignment 

Первая строка присваивает 1 к countArray.length, который решает 1, который truthy.

Смежные вопросы