Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    Convertire codice jQuery in Javascript puro

    Ho delle funzioni tipo questa in jQuery:
    codice:
        //    LOGICA DI SPOSTAMENTO PEDINE    $(".possible").live("click",function () {
            $('.casella').removeClass('possible');
            $('.casella').removeClass('mangiabile');
            $('.clicked div').appendTo(this); // Sposta la pedina da un div all'altro.
            $('.clicked').removeClass('occupato');
            $('.clicked').removeClass('clicked');
            $(this).addClass('occupato');
            nuovoTurno();
                if(Turno%2==1)
                {
                    document.getElementById('info_game').innerHTML = "Tocca al Bianco";
                }
                else
                {
                    document.getElementById('info_game').innerHTML = "Tocca al Nero";
                }
        });
    C'è un modo indolore per portarle in javascript?
    Se non erro jQuery è open quindi dovrei poter trovare le librerie che usa per eseguire quelle funzioni in javascript. Purtroppo devo fare questa barbaria perchè devo terminare un progetto per l'esame di progettazione web ed il professore ha vietato categoricamente jQuery.

  2. #2
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    3,660
    Ho buttato giù velocemente una bozza, dovrebbe funzionare ma probabilmente si può affinare, vedi un po' tu...

    codice:
    var casella = document.getElementsByClassName("casella");
    removeClass(casella , 'possible');
    removeClass(casella , 'mangiabile');
    var clicked = document.getElementsByClassName("clicked");    
    for(i=0;i<clicked.length;i++){
        for(j=0;j<clicked[i].childNodes.length;j++){
            if(clicked[i].childNodes[j].tagName == 'DIV'){
                 elThis.appendChild(clicked[i].childNodes[j]);                
            }
        }
    }
    removeClass(clicked , 'occupato');
    removeClass(clicked , 'clicked');
    elThis.className += " occupato";​
    
    
    function removeClass(ele,cls) {
        for(i=0;i<ele.length;i++){
            var reg = new RegExp('(\\s|^)'+cls+'(\\s|$)');
            ele[i].className=ele[i].className.replace(reg,' ');
        }
    }
    L'elemento cliccato (elThis) va passato in input alla funzione.

  3. #3
    Buongiorno

    Grazie!!! La funzione che mi hai scritto l'ho capita. Non ho ancora chiaro però come inserirla all'interno del flusso del programma, ti spiego la mia situazione: Studio ing. informatica e dopo un corso di sole sessanta ore devo presentare un progetto in javascript, una dama per l'esattezza.

    Dopo aver buttato giù buona parte del progetto scopro che non potevo usare jQuery e quindi mi trovo a tradurre buona parte del codice.

    Di seguito vedi come avevo implementato la dama ma non ho come in javascript delle funzioni ma un unico flusso. La prima funzione invece l'ho già tradotta, anche se a fatica

    codice:
    	// LOGICA DI GENERAZIONE DELLA SCACCHIERA E DELLE PEDINE
    	
    	var Turno=1;
    	
    	
    	function creaScacchiera() { 
    	var row=1;
    	for (i=0;i<32;i++){
    	   var newdiv = document.createElement('div');
    	   newdiv.innerHTML += i;
    	   newdiv.setAttribute('id', i);   
    	   newdiv.setAttribute("class","casella");
    	   newdiv.className += " "+'row'+row;
    		if (i%4==3) {++row;}
    
    		if (i%8==0)
    		{
    			   newdiv.className += " capo";
    		}
    				if (i%8==7)
    		{
    			   newdiv.className += " capo_dx";
    		}
    
    		if (i<12)
    		{
    			   newdiv.className += " occupato";
       			   newdiv.innerHTML +='<div class="pedina bianchi" id="p'+i+'" onClick="cliccaPedina()"></div>'
    
    		}
    		else if (i>19)
    		{
    			   newdiv.className += " occupato";
    			   newdiv.innerHTML +='<div class="pedina neri" id="p'+i+'"></div>'
    		}
    		var schacchiera = document.getElementById('container');
    	   schacchiera.appendChild(newdiv);
       }
    }
    
    creaScacchiera();
    
    
    	
    	function checkMangiabile(elemento,pedina)
    	{
    			var idc = Number($('#'+elemento+'').attr('id'));  // idc = id della casella potenzialmente mangiabiel.
    			var riga = ($('#'+elemento+'').attr('class')).substr(11,1);
    			var capo = ($('#'+elemento+'').attr('class')).substr(13,4);
    			var mangiante = Number($('#p'+pedina+'').parent().attr('id')); // Id casella della pedina mangiante
    
    	if (pedina <12) //OVVERO BIANCA
    	{
    
    		if($('#'+elemento+' > div').hasClass('neri'))
    		{
    
    				if (Number(riga)%2==1) // Se riga dispari
    					{
    						{
    							$('#'+(idc+(idc-mangiante-1))+'').not('.occupato').addClass('possible');	
    						}
    
    					}
    				else // se pari
    					{
    							$('#'+(idc+(idc-mangiante+1))+'').not('.occupato').addClass('possible');	
    					}
    		}
    	}
    	else //OVVERO NERA
    	{
    		if($('#'+elemento+' > div').hasClass('bianchi'))
    		{
    				if (Number(riga)%2==1)
    					{
    						{
    							$('#'+(idc+(idc-mangiante+1))+'').not('.occupato').addClass('possible');	
    						}
    
    					}
    				else
    					{
    							$('#'+(idc+(idc-mangiante-1))+'').not('.occupato').addClass('possible');	
    					}
    		}
    	}
    	//Bisogna Verificare se nei dintorni vi sono pedine avversarie mangiabili, a quel punto bisogna marcare la tabella di destinazione come 'possibile';
    	}
    	
    
    	function nuovoTurno()
    	{
        document.getElementById('info').innerHTML = "Turno n° "+ ++Turno;
    	}
    
    	
    	// LOGICA DI RICONOSCIMENTO DELLA PEDINA SELEZIONATA E ILLUMINAZIONE DELLE DESTINAZIONI POSSIBILI
    	$(".pedina").click(function () {
    		$(".casella").removeClass('clicked');
    	//	$(".casella").removeClass('mangiabile'); superflua
    		$(this).parent().addClass('clicked');
    		var idc = Number($(this).parent().attr('id')); // Idc = id della casella. Casting esplicito a valore numerico (per avitare erronea concatenazione 14+4 = 144)
    		$(".casella").removeClass('possible');
    		var pedina = ($(this).attr('id')).substring(1); // Prendo id pedina.
    		var riga = ($(this).parent().attr('class')).substr(11,1);
    		var capo = ($(this).parent().attr('class')).substr(13,4);
    		if (pedina<12)
    		{
    			if(Turno%2==1)
    			{
    				if (Number(riga)%2==1)
    					{
    					if (capo=="capo") // Se sono ad un estremo
    						{
    							$('#'+(idc+4)+'').not('.occupato').addClass('possible'); // Metto occupato se l'id della casella +4 è non occupato.
    							if ($('#'+(idc+4)+'').hasClass('occupato'))
    							{
    							checkMangiabile((idc+4),pedina);
    							}
    						}
    					else
    						{
    							$('#'+(idc+4)+', #'+(idc+3)+'').not('.occupato').addClass('possible');
    							if($('#'+(idc+4)+'').hasClass('occupato'))
    							{
    								checkMangiabile((idc+4),pedina);
    							}
    							if($('#'+(idc+3)+'').hasClass('occupato'))
    							{
    								checkMangiabile((idc+3),pedina);
    							}
    						}
    					}
    				else // Riga pari
    					{
    					if (capo=="capo")
    						{
    							$('#'+(idc+4)+'').not('.occupato').addClass('possible');
    							if ($('#'+(idc+4)+'').hasClass('occupato'))
    							{
    							checkMangiabile((idc+4),pedina);
    							}
    
    						}
    					else{
    
    						$('#'+(idc+5)+', #'+(idc+4)+'').not('.occupato').addClass('possible');
    						if($('#'+(idc+5)+'').hasClass('occupato'))
    						{
    							checkMangiabile((idc+5),pedina);
    						}
    						if($('#'+(idc+4)+'').hasClass('occupato'))
    						{
    							checkMangiabile((idc+4),pedina);
    						}
    						}
    					}
    			}
    		}
    		if (pedina>19)
    		{
    			if(Turno%2==0)
    			{
    
    
    				if (Number(riga)%2==0)
    					{
    					if (capo=="capo")
    						{
    							$('#'+(idc-4)+'').not('.occupato').addClass('possible');
    							if ($('#'+(idc-4)+'').hasClass('occupato'))
    							{
    							checkMangiabile((idc-4),pedina);
    							}
    
    						}
    					else
    						{
    							$('#'+(idc-4)+', #'+(idc-3)+'').not('.occupato').addClass('possible');
    							if($('#'+(idc-4)+'').hasClass('occupato'))
    							{
    								checkMangiabile((idc-4),pedina);
    							}
    							if($('#'+(idc-3)+'').hasClass('occupato'))
    							{
    								checkMangiabile((idc-3),pedina);
    							}
    
    						}
    					}
    				else
    					{
    					if (capo=="capo")
    						{
    							$('#'+(idc-4)+'').not('.occupato').addClass('possible');
    							if ($('#'+(idc-4)+'').hasClass('occupato'))
    							{
    							checkMangiabile((idc-4),pedina);
    							}
    
    						}
    					else{
    						$('#'+(idc-5)+', #'+(idc-4)+'').not('.occupato').addClass('possible');
    						if($('#'+(idc-5)+'').hasClass('occupato'))
    						{
    							checkMangiabile((idc-5),pedina);
    						}
    						if($('#'+(idc-4)+'').hasClass('occupato'))
    						{
    							checkMangiabile((idc-4),pedina);
    						}
    						}
    						
    					}
    			}
    		}
        });
    
    	//	LOGICA DI SPOSTAMENTO PEDINE
    	$(".possible").live("click",function () {
    		$('.casella').removeClass('possible');
    		$('.casella').removeClass('mangiabile');
    		$('.clicked div').appendTo(this); // Sposta la pedina da un div all'altro.
    		$('.clicked').removeClass('occupato');
    		$('.clicked').removeClass('clicked');
    		$(this).addClass('occupato');
    		nuovoTurno();
    			if(Turno%2==1)
    			{
    				document.getElementById('info_game').innerHTML = "Tocca al Bianco";
    			}
    			else
    			{
    				document.getElementById('info_game').innerHTML = "Tocca al Nero";
    			}
        });

  4. #4
    Nesuno?

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.