Avatar billede lequet Nybegynder
31. maj 2002 - 16:03 Der er 5 kommentarer og
1 løsning

"Lås" et felt ved klik

Hej, jeg sidder med følgende lille script, som skal forestille starten på et "kryds og bolle" spil. Nu er mit problem at jeg på en eller anden måde, skal have gjort sådan at når man har trykket på et felt, skal man ikke kunne trykke på det igen.

Altså : Man trykker på et felt. Det felt får farven rød, hvis man trykker på et nyt felt (eller det samme igen) får det farven blå. Dette skal jeg have lavet om så hvis man trykker på det samme felt igen, sker der ikke noget.

Håber det er forståeligt :)

<script language="JavaScript" type="text/javascript">
var turn = 1 ;
       
function hitField(fieldID) {
  var fieldObj = document.getElementById(fieldID) ;
           
  var whatColor = (turn == 1) ? "red" : "blue";
                       
  fieldObj.style.backgroundColor = whatColor ;
           
  turn = (turn == 1) ? 2 : 1 ;
}
</script>

Og her selve spille feltet :

<table width="150" cellspacing="0" cellpadding="0" align="center">
    <tr>
        <td class="field" id="f1" onClick="hitField('f1')">&nbsp;</td>
        <td class="field" id="f2" onClick="hitField('f2')">&nbsp;</td>
        <td class="field" id="f3" onClick="hitField('f3')">&nbsp;</td>
    </tr>
    <tr>
        <td class="field" id="f4" onClick="hitField('f4')">&nbsp;</td>
        <td class="field" id="f5" onClick="hitField('f5')">&nbsp;</td>
        <td class="field" id="f6" onClick="hitField('f6')">&nbsp;</td>
    </tr>
    <tr>
        <td class="field" id="f7" onClick="hitField('f7')">&nbsp;</td>
        <td class="field" id="f8" onClick="hitField('f8')">&nbsp;</td>
        <td class="field" id="f9" onClick="hitField('f9')">&nbsp;</td>
    </tr>
</table>
Avatar billede mikoalngelo Nybegynder
31. maj 2002 - 16:08 #1
var whatColor = (fieldObj.style.backgroundColor != 'red' && fieldObj.style.backgroundColor != 'blue') ? (turn == 1) ? "red" : "blue"; : alert(Hov hov du...);
Avatar billede lequet Nybegynder
31. maj 2002 - 16:10 #2
Den giver 2 fejl :

"tegnet ";" var ventet" (Når siden loades)

og

"Et objekt var ventet" (Når man trykker på et felt)
Avatar billede lequet Nybegynder
31. maj 2002 - 16:11 #3
Det skal helst laves så hvert felt har en tilhørende variabel som er enten true eller false alt efter om det felt har været clikket på... Så jeg senere kan lave så den tjecker hvem der har vundet :)
Avatar billede mikoalngelo Nybegynder
31. maj 2002 - 16:12 #4
Det her virker lidt bedre...:

<script language="JavaScript" type="text/javascript">
var turn = 1 ;
       
function hitField(fieldID) {
  var fieldObj = document.getElementById(fieldID) ;
           
  var whatColor = ((fieldObj.style.backgroundColor != 'red') && (fieldObj.style.backgroundColor != 'blue')) ? (turn == 1) ? "red" : "blue" : alert('Hov hov du...')
                       
  fieldObj.style.backgroundColor = whatColor ;
           
  turn = (turn == 1) ? 2 : 1 ;
}
</script>

Og her selve spille feltet :

<TABLE WIDTH="150" BORDER="2" ALIGN="center" CELLSPACING="0" CELLPADDING="0">
    <tr>
        <td class="field" id="f1" onClick="hitField('f1')">&nbsp;</td>
        <td class="field" id="f2" onClick="hitField('f2')">&nbsp;</td>
        <td class="field" id="f3" onClick="hitField('f3')">&nbsp;</td>
    </tr>
    <tr>
        <td class="field" id="f4" onClick="hitField('f4')">&nbsp;</td>
        <td class="field" id="f5" onClick="hitField('f5')">&nbsp;</td>
        <td class="field" id="f6" onClick="hitField('f6')">&nbsp;</td>
    </tr>
    <tr>
        <td class="field" id="f7" onClick="hitField('f7')">&nbsp;</td>
        <td class="field" id="f8" onClick="hitField('f8')">&nbsp;</td>
        <td class="field" id="f9" onClick="hitField('f9')">&nbsp;</td>
    </tr>
</table>
Avatar billede lequet Nybegynder
31. maj 2002 - 16:15 #5
Ahh :) Det virkede, takker for hjælpen, så langt så godt :)
Avatar billede jakoba Nybegynder
31. maj 2002 - 16:18 #6
function hitField(fieldID) {
  var fieldObj = document.getElementById(fieldID) ;
  if ( fieldObj.tagetAfSpiller > 0 ) {
      // fejl, allerede klikket på.
      alert( "allerede klikket på, prøv ent andet felt" );
      return;
  }
         
  var whatColor = (turn == 1) ? "red" : "blue";
                     
  fieldObj.style.backgroundColor = whatColor ;
  fieldObj.tagetAfSpiller = turn+1;       
  turn = (turn == 1) ? 2 : 1 ;
}

mvh JakobA
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester