Подсчет вхождений в JavaScript - PullRequest
0 голосов
/ 08 марта 2012

Я создаю простое приложение-головоломку для iPad и библиотеку 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');
};

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

Ответы [ 2 ]

5 голосов
/ 08 марта 2012

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

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

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

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

// 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');
    }
}});

Я на самом деле не проверял это, но вот версия со всеми убранными веб-наборами и заменой капли простым щелчком: http://jsfiddle.net/kajic/snJMr/1/

Если вы щелкнете по красному полю, это то, что вы ожидали, что произойдет в вашем приложении для iPad, когда вы бросите кусок?

4 голосов
/ 08 марта 2012

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

if(countArray.length = 1){

до

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

Первая строка присваивает 1 countArray.length, что соответствует 1, что верно.

...