Avatar billede anderseiler Nybegynder
18. december 2008 - 21:50 Der er 9 kommentarer og
1 løsning

onClick inden i onClick?

Hej, jeg har et proglem med nogle onclicks der ikke virker så optimalt.. Jeg har:

<table>
  <tr>
    <td onclick="alert('test1');">
      <div onclick="alert('test2');"></div>
    </td>
  <tr>
</table>

når jeg klikker på min td, så kommer test 1 frem som den skal (hvis jeg klikker et sted i min td hvor div'en ikke dækker). Men hvis jeg klikker i min div kommer både test1 og test2 frem. Kan jeg ikke nøjes med at få test2 frem? Nærmest lægge den i et lag ovenpå eller et eller andet?

tak
Avatar billede mireigi Novice
18. december 2008 - 21:57 #1
Så vidt jeg ved, kan det ikke lade sig gøre. DIV'en er, ligegyldigt z-index, stadig placeret inde i TD'en, og deler derfor dennes z-index.

Jeg kan dog ikke se hvorfor du vil have en alert på begge.
Avatar billede anderseiler Nybegynder
18. december 2008 - 22:00 #2
min alert er bare et eksempel.. Jeg har en JS funktion som køres når jeg trykker på min TD. Jeg har så et link inden i min div, som jeg gerne vil have, at man kan trykke på, uden funktionen i min TD køres.. Eksemplet var bare for overskuelighedens skyld :)
Avatar billede mireigi Novice
18. december 2008 - 22:24 #3
Prøv lige at smide den her kode ind i dit head-tag:

<script language="javascript" type="text/javascript">
  var cancelNext = false;
  function ShowAlert(message, cancel)
  {
      if(!cancelNext)
      {
        alert(message);
        if (cancel)
            cancelNext = true;
      }
      else
      {
        cancelNext = false;
      }
  }
</script>


Og erstat din table kode med:

<table>
  <tr>
      <td onclick="ShowMessage('test1', false);">
        <div onclick="ShowMessage('test2', true);"></div>
      </td>
      <tr>
</table>

Dette virker dog kun hvis beskeden i din DIV-onclick bliver kørt før din TD-onclick.

PS: Koden er IKKE testet.
Avatar billede erikjacobsen Ekspert
18. december 2008 - 22:27 #4
Avatar billede anderseiler Nybegynder
20. december 2008 - 13:31 #5
Hmm, det er jo noget møg..

Er der evt nogen af jer, der har brugt Google Calendar? Det er noget i stil med det, osm jeg prøver at lave.. (altså princippet i, at man kan klikke på en dato, men stadig klikke på et "event" den dato)... :)
Avatar billede mireigi Novice
20. december 2008 - 14:54 #6
En måde du kan gøre det på er denne:

<html>
<body>
    <table>
        <tr><td>Bla bla bla</td></tr>
        <tr>
            <td>
                <div onclick="this.style.backgroundColor='#CCCCCC'" style="height:100px; width:100px; border:solid 1px black; position:absolute;">20-12-2008</div>
                <div onclick="alert('Event: Test tid')" style="background-color:#00CCFF; height:20px; width:80px; border:solid 1px black; position:absolute; margin:22px 0px 0px 10px;">Test tid</div>
                <div onclick="alert('Event: Test tid 2')" style="background-color:#00FFCC; height:20px; width:80px; border:solid 1px black; position:absolute; margin:44px 0px 0px 10px;">Test tid 2</div>
            </td>
        </tr>
    </table>
</body>
</html>
Avatar billede anderseiler Nybegynder
20. december 2008 - 15:51 #7
Genialt, mireigi - point til dig, smid et svar men ven :)

Mange tak :)
Avatar billede mireigi Novice
20. december 2008 - 17:36 #8
Det var så lidt :)

MiReiGi
Avatar billede roenving Novice
31. december 2008 - 01:37 #9
-- og hvis man skal bruge de almindelige events, bliver det noget i stil med:

<table>
  <tr>
    <td onclick="alert('test1');prev(false,event);">
      <div onclick="alert('test2');prev(true,event);"></div>
    </td>
  <tr>
</table>

<script type="text/javascript">
function prev(act,evt){
  if(!act)//bare for at kunne noget under alle omstændigheder !-)
    return;
  evt = evt ? evt : event;
  if(evt.stopPropagation)
    evt.stopPropagation();
  else if (evt.cancelBubble)
    evt.cancelBubble = true;
  else
    return false;
}
</script>
Avatar billede olebole Juniormester
31. december 2008 - 17:46 #10
<ole>

- og roenvings løsning er brugen af events, som de er beregnet til at blive brugt  =)

/mvh
</bole>
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