JavaScript ja Elementille taustaan verrattuna käänteinen väri

Anonyymi

Vaikutti että ei olisi kovin yksinkertainen tehtävä. Tuossa alla tuo esimerkki asettaa kaikkien elementtien väriksi punainen. Mutta miten tuo tehtäisiin niin että se piikkaa** elementiltä taustavärin ja asettaa edustalle käänteisen värin.

for (var i = 0; i < document.all.length; i ) {
document.all[i].style.color = "red" }

Kun nyt katsotaan esimerkki, mitä elementtejä tämä jo aiemmin käsitelty esimerkki sisältää ( https://pastebin.com/7AJ6AzdY ), niin voi havaita ettei kaikilla elementeillä ole asetettavissa väriä edustalle eikä taustalle kuten tämän silmukan ajo osoittaa:

for (var i = 0; i < document.all.length; i ) {
console.log(i " => " document.all[i].tagName) }

Ei taida JavaScriptin suoritus katketa, vaikka elementille ei käänteistä väriä pystyisikään asettamaan tai taustaväriä noutamaan.

PS: Ei tarvitse vastata, jos menee hyvin monimutkaiseksi, kuten epäilen.

**piikkaa
Tähän tulisi olla parempi termi, olen tuon juontanut Commodore 64 ajoilta PEEK() funktiosta jolla luettiin muistipaikan sisältö.

8

132

    Vastaukset

    Anonyymi (Kirjaudu / Rekisteröidy)
    5000
    • Anonyymi

      Onko tämä sinnepäinkään, ei se ainakaan toimi, niin kuin pitäisi.

      for (var i = 0; i < document.all.length; i ) {
      var BC = document.all[i].style.backgroundColor;
      var FC = document.all[i].style.Color;
      document.all[i].style.color = BC;
      document.all[i].style.background = FC;
      console.log("BC:" BC "FC:" FC);
      }

      • Anonyymi

        Tässä on varmaan joku juttu, kun väriä ei ole erikseen määritelty taustalle, eikä tekstille, niin ei tuo värin poimintakaan onnistu.


    • Anonyymi
      • Anonyymi

        Eli tätä ( document.getElementsByTagName('body')[0].style.backgroundColor; ) ei saa toimimaan.

        getElementsByClassName ja getElementsByTagName ei anna kuin "" kysyipä tausta tai edusta väriä, en ainakaan saanut ulos muuta.

        Joo getElementById(id) näyttää tuottavan tulosta, hyvän esimerkin laitoit. Harmi että se on tehtävä ID:llä, kun tarkoitus on vaihtaa värejä TagName tai ClassName poimintaan perustuen, kun tuota ID:tä ei ole sivulla määritelty. Tuo TagName olisi ollut paras koska se on olemassa aina.


      • Anonyymi
        Anonyymi kirjoitti:

        Eli tätä ( document.getElementsByTagName('body')[0].style.backgroundColor; ) ei saa toimimaan.

        getElementsByClassName ja getElementsByTagName ei anna kuin "" kysyipä tausta tai edusta väriä, en ainakaan saanut ulos muuta.

        Joo getElementById(id) näyttää tuottavan tulosta, hyvän esimerkin laitoit. Harmi että se on tehtävä ID:llä, kun tarkoitus on vaihtaa värejä TagName tai ClassName poimintaan perustuen, kun tuota ID:tä ei ole sivulla määritelty. Tuo TagName olisi ollut paras koska se on olemassa aina.

        Voihan ne valita tagname:nkin mukaan. Luulin, että sen taustavärin ja värin saaminen oli se pääjuttu(?). Tässä tagnamella (p-elementit, jätin id:t niihin css:ää varten):

        https://jsfiddle.net/7ftgvo90/

        Siis, getElementsByTagName () palauttaa kokoelman elementtejä, joille sitten jokaiselle kutsutaan sitä window.getComputedStyle(element):tiä, jotta saadaan sen kyseisen elementin värit selville ja miten ne sitten halutaan muuttaakaan. Tuossa muuten sellainen juttu, joka aluksi aiheutti itselleni ongelman: kun element.style:ä muuttaa, niin ilmeisesti se computed style -oliokin muuttuu, joten siitä on ensin otettava halutut tiedot talteen ja sitten muokattava elementtiä.


      • Anonyymi
        Anonyymi kirjoitti:

        Voihan ne valita tagname:nkin mukaan. Luulin, että sen taustavärin ja värin saaminen oli se pääjuttu(?). Tässä tagnamella (p-elementit, jätin id:t niihin css:ää varten):

        https://jsfiddle.net/7ftgvo90/

        Siis, getElementsByTagName () palauttaa kokoelman elementtejä, joille sitten jokaiselle kutsutaan sitä window.getComputedStyle(element):tiä, jotta saadaan sen kyseisen elementin värit selville ja miten ne sitten halutaan muuttaakaan. Tuossa muuten sellainen juttu, joka aluksi aiheutti itselleni ongelman: kun element.style:ä muuttaa, niin ilmeisesti se computed style -oliokin muuttuu, joten siitä on ensin otettava halutut tiedot talteen ja sitten muokattava elementtiä.

        Joo, tuo oli hyvä, niin kuin sinulla näyttää kaikki olevan. Meni muutama tunti, tuohon värimaailmaan perehtyessä, kun noita koodauksia on monenlaisia. Tuo yllätti että kun värejä ei ole määritelty, niin sieltä saa palautteena ( rgba ) ja ( rgb ), eikä tunnu olevan funktiota jolla värin muuttaisi vertailua varten johonkin yhtäläiseen muotoon. Törmäsin moneen eri esimerkkiin jossa itse on koodattu funktio heksadesimaali muutosta varten. Olipa jopa tapailtu NIMI (red, blue jne.) muunnoksiakin.

        BC = rgba(0, 0, 0, 0) FC = rgb(0, 0, 0)

        Katsotaan nyt missä kohtaa sitä seuraavaksi kompastellaan. Ei mennyt hukkaan tämäkään opiskelupäivä.


    • Anonyymi

      Ota taustaväri ja käännä se bitwice: foregroundColor =~backgroundColor;

    • Anonyymi

      Tässä yksi niistä S24 sivuston helmistä, kiitoksia.

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

    Luetuimmat keskustelut

    1. SDP jo 100 % suositumpi kuin persut

      Kertoo Hesarin uusin kannatuskysely. Demareiden kannatus on miltei tuplat verrattuna persuihinl. Suomen kansa ei selväst
      Maailman menoa
      115
      10773
    2. Voiko normaali ihminen ryhtyä vasemmistolaiseksi?

      Tätä jäin pohdiskelemaan.
      Maailman menoa
      255
      4656
    3. SDP haluaa 40 000 nettomaahanmuuttajaa

      SDP:n Suunnanmuutos-vaihtoehtobudjetissa, käy ilmi, että demarit itse asiassa vaativat räjähdysmäistä ”työperäisen” maah
      Maailman menoa
      177
      4021
    4. Orpo: Velkajarrua vastustavaa puoluetta vaikea ajatella hallitukseen

      No Minja Koskelan kommunistipuolue jäi ulos tuosta. Kaikki eduskuntapuolueet vasemmistoliittoa lukuun ottamatta sopivat
      Maailman menoa
      177
      3513
    5. PS ylivoimainen nousija myös HS:n gallupissa, SDP laskee taas

      https://www.verkkouutiset.fi/a/hs-gallup-sdpn-suosio-laskee-ps-nousussa/#0a7d2507 Ylivoimainen viime kuukausien nousija
      Maailman menoa
      82
      3349
    6. Mikä tämä henkilö mahtaa touhuta Parkanossa

      Kamalaa https://www.ylasatakunta.fi/teksti/pirkanmaan-karajaoikeus-vangitsi-koiran-tappamisesta-epaillyn-6.68.127794.b58
      Parkano
      42
      3137
    7. Valtavasti suomalaisia asunnottomina, mutta ei yhtään somalia

      tai muuta kehitysmaalaista. Mites tässä näin kävi? Tiedän hyvin, että esim. somaleita lentää ulos mm. Hekan asunnoista,
      Maailman menoa
      79
      3126
    8. Ikävä sinua mies

      Vuosia kuluu, mutta tunteet ei ole hävinnyt. Tasoittuneet toki, kun ei olla nähty. Järki palannut päähän kuitenkin. Se i
      Ikävä
      27
      2689
    9. Hienoa! Eduskunta luopui käteisen käytöstä

      Nyt tuo sama muutos pitää saada myös muuhun yhteiskuntaan. Käteistähän ei tarvitse tänä päivänä enää kuin rikolliset.
      Maailman menoa
      68
      1831
    10. Kiinnostaa - ei kiinnosta - kiinnostaapas

      Selittäkää hämmentyneelle miksi miehiä ei ikinä kiinnosta silloin, kun sitä olisi itsekin kiinnostunut? Sitten kun siirt
      Sinkut
      180
      1665
    Aihe