Taulukon solun indeksi?

aloittelija..

Haluaisin tietää, mitä taulukon solua (cell) kayttaja klikkaa, tai ainakin solun sisällön. Miten onnistuu?

Joka soluun , ja tuossa funktiossa sitten solun indeksi selville this.cellIndex:lla? Vai pitääkö tieto solusta jotenkin välittää funktiolle html:n puolelta? En saa toimimaan..

Entä solun sisältö? Olen ajatellut, että this.innerHTML voisi toimia, mutta enpä osaa.

5

555

    Vastaukset

    Anonyymi (Kirjaudu / Rekisteröidy)
    5000
    • Ron Jeremy

      Olet kyllä oikeilla jäljillä ...tapahtumien käsittely tapahtuu hieman eri tavalla IE vs. Mozilla/FireFox/Opera selaimissa joten joudut hieman haarautumaan koodissa.

      Määrittele ensin tapahtumakäsittelijä TD elementeille (object/node itse asiassa tässä yhteydessä):

      function TaulukkosoluaKlikattu(evt)
      {
      evt = (evt) ? evt : (window.event) ? window.event : "";
      if (evt) {
      var tdObj = (evt.target) ? evt.target : evt.srcElement;
      alert("Rivi " tdObj.parentNode.rowIndex " Sarake " tdObj.cellIndex "\n\nSisältö: " tdObj.innerHTML);

      }

      }

      Huomioitavaa.

      1. Mozilla Gecko pohjaisissa selaimissa tapahtumaobjekti välitetään parametrina, IE selaimessa tapahtumaobjekti on aina window.event

      2. evt.target on tapahtuman kohdeobjekti(/node) (tässä tapauksessa "click" tapahtuman) Mozillassa ja evt.srcElement IE:ssä

      3. tdObj.parentNode viittaa TR elementtiin jonka
      lapsielementti on click-tapahtuman kohteena oleva TD elementti. Tällä tavalla saamme selville klikatun taulukkosolun rivinumeron.

      4. Sisältö normaalisti .innerHTML ominaisuudella (innerHTML ei ole muuten W3C:n hyväksymä, mutta se on yleisesti hyvin tuettu nykyisissä selaimissa)


      Tämän jälkeen voit liittää tapahtumakäsittelijän normaalisti jokaiseen TD elementtiin, esim:

      R0C0   

      (Huomaa että joudut käyttämään "event" sanaa edellisessä yhteydessä Mozillaa varten)

      Edellä mainittu tapa on kuitenkin työläs jos sinulla on iso taulukko, parempi liittää tapahtumakäsittelijät skriptillä näin:



      function InitPage()
      {
      var taulukko_obj = document.getElementById("demotaulukko");
      var taulukon_solut = taulukko_obj.getElementsByTagName("td");
      for (var i = 0; i < taulukon_solut.length; i ) {
      taulukon_solut[i].onclick = TaulukkosoluaKlikattu;

      }

      }










      R0C0      
         

      R0C1


      R0C2


      R0C3


      R0C4



      R1C0


      R1C1


      R1C2


      R1C3
         

      R1C4
         



      R2C0


      R2C1


      R2C2


      R2C3


      R2C4




      R3C0


      R3C1


      R3C2


      R3C3


      R3C4

         





      Jos kuitenkin haluat itse kirjoittaa manuaalisesti jokaiseen TD elementtiin tapahtumakäsittelijän, voit halutessasi hieman muuttaa tapahtumakäsittelijä koska nyt voit välittää clicktapahtuman kohdeobjektin suoraan tapahtumakäsittelijälle:

      function TaulukkosoluaKlikattu(tdObj, evt)
      {
      evt = (evt) ? evt : (window.event) ? window.event : "";
      if (evt) {
      alert("Rivi " tdObj.parentNode.rowIndex " Sarake " tdObj.cellIndex "\n\nSisältö: " tdObj.innerHTML);

      }

      }

      R0C0   


      Toivottavasti selkeni edes hieman...

      Ron "hedgehog" Jeremy

      • aloittelija..

        Ei ollutkaan sitten ihan niin yksinkertainen juttu kuin luulin. Kiitokset ohjeista, taitavat vaatia vähän sulattelua..


      • Mochikit
        aloittelija.. kirjoitti:

        Ei ollutkaan sitten ihan niin yksinkertainen juttu kuin luulin. Kiitokset ohjeista, taitavat vaatia vähän sulattelua..

        http://www.mochikit.com/

        Mochikit on JavaScript-kirjasto (ilmainen), joka piilottaa tuollaiset rumat detaljit ohjelmoijilta. Sillä on useita kehittäjiä, jonka takia se toimii luotettavasti useilla selaimilla. Heillä on luettelo kaikista, joilla sitä on testattu.

        Älä rupea itse värkkäämään jokaisen eri selaimen ongelmien kanssa. Anna muiden huolehtia siitä, koska he tekevät sen paremmin kuin mitä sinä nopeasti kerkeät. Ovat jo tehneet...

        Mochikit on tutustumisen arvoinen kirjasto.


      • aloittelija..

        Pohdiskelin ohjeitasi ja totesin, että en tarvitsekaan solun indeksiä loppujen lopuksi, vain vaan sen sisällön. Ja sen laitoin php:lla suoraan solun id:ksi.

        Sitten pientä ajax-tyyppistä sähläystä, jolla saan id:n siirtymään argumentiksi tietokanta-kyselylle ja lopuksi päivitän alkuperäisen taulukon kokonaan. Kummallinen juttu vain oli, että taulukko piti laittaa div:n sisään ennen kuin sain uuden taulukon "piirtymään" oikein yhdellä browserilla (mobiili Opera?)..


      • aloittelija..
        Mochikit kirjoitti:

        http://www.mochikit.com/

        Mochikit on JavaScript-kirjasto (ilmainen), joka piilottaa tuollaiset rumat detaljit ohjelmoijilta. Sillä on useita kehittäjiä, jonka takia se toimii luotettavasti useilla selaimilla. Heillä on luettelo kaikista, joilla sitä on testattu.

        Älä rupea itse värkkäämään jokaisen eri selaimen ongelmien kanssa. Anna muiden huolehtia siitä, koska he tekevät sen paremmin kuin mitä sinä nopeasti kerkeät. Ovat jo tehneet...

        Mochikit on tutustumisen arvoinen kirjasto.

        En saanut edes kirjaston omaa demoa näkymään oikein (http://www.mochikit.com/examples/ajax_tables/index.html)..
        selain ei ladannut esimerkin taulukkoa kokonaan.

        Eli ehkäpä käytössä oleva browserini ei ole ihan standardi (mobiili Opera??), joten eipä taida auttaa minua ainakaan vielä. Kiitokset vinkistä kuitenkin!


    Ketjusta on poistettu 0 sääntöjenvastaista viestiä.

    Luetuimmat keskustelut

    1. Aivosyöpää sairastava Olga Temonen TV:ssä - Viimeinen Perjantai-keskusteluohjelma ulos

      Näyttelijä-yrittäjä Olga Temonen sairastaa neljännen asteen glioomaa eli aivosyöpää, jota ei ole mahdollista leikata. Hä
      Maailman menoa
      91
      2900
    2. Pelotelkaa niin paljon kuin sielu sietää.

      Mutta ei mene perille asti. Miksi Venäjä hyökkäisi Suomeen? No, tottahan se tietenkin on jos Suomi joka ei ole edes soda
      Maailman menoa
      299
      1686
    3. Mikä saa ihmisen tekemään tällaista?

      Onko se huomatuksi tulemisen tarve tosiaan niin iso tarve, että nuoruuttaan ja tietämättömyyttään pilataan loppuelämä?
      Sinkut
      246
      1557
    4. Minkä merkkisellä

      Autolla kaivattusi ajaa? Mies jota kaipaan ajaa Mersulla.
      Ikävä
      87
      1391
    5. IL - VARUSMIEHIÄ lähetetään jatkossa NATO-tehtäviin ulkomaille!

      Suomen puolustuksen uudet linjaukset: Varusmiehiä suunnitellaan Nato-tehtäviin Puolustusministeri Antti Häkkänen esittel
      Maailman menoa
      402
      1374
    6. Nyt kun Pride on ohi 3.0

      Edelliset kaksi ketjua tuli täyteen. Pidetään siis edelleen tämä asia esillä. Raamattu opettaa johdonmukaisesti, että
      Luterilaisuus
      398
      1292
    7. Kiitos nainen

      Kuitenkin. Olet sitten ajanmerkkinä. Tuskin enää sinua näen ja huomasitko, että olit siinä viimeisen kerran samassa paik
      Tunteet
      2
      1079
    8. Esko Eerikäinen tatuoi kasvoihinsa rakkaan nimen - Kärkäs kommentti "Ritvasta" lävähti somessa

      Ohhoh! Esko Eerikäinen on ottanut uuden tatuoinnin. Kyseessä ei ole mikä tahansa kuva minne tahansa, vaan Eerikäisen tat
      Suomalaiset julkkikset
      38
      1037
    9. Hyväksytkö sinä sen että päättäjämme ei rakenna rauhaa Venäjän kanssa?

      Vielä kun sota ehkäpä voitaisiin välttää rauhanponnisteluilla niin millä verukkeella voidaan sanoa että on hyvä asia kun
      Maailman menoa
      329
      874
    10. Miksi Purra-graffiti ei nyt olekkaan naisvihaa?

      "Pohtikaapa reaktiota, jos vastaava graffiti olisi tehty Sanna Marinista", kysyy Tere Sammallahti. Helsingin Suvilahden
      Maailman menoa
      257
      855
    Aihe