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

174

    Vastaukset 8

    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. Venäjä alkaa iskemään Suomen politiikkaan.

      Tässä on valtion ja koko länsiliiton päämiehet varoitelleet, että Venäjä alkaa talven aikana taas iskemään hybridisesti.
      Sinkut
      237
      1471
    2. Hallituksen järjestämä spektaakkeli tuo vessanpyttykeissi

      Että olisi kymmenien kansanedustajien kodeissa käyty ihan tuosta vaan, eikä kukaan kansanedustaja kerro niin käyneen, va
      Maailman menoa
      282
      1043
    3. Miltä tuntuu vanhempi nainen olla

      Pihkassa huomattavasti nuorempaan kolliin joka on uskollinen ja kiltti ja tottelee joka asiaa ja tykkää pussailla ja pan
      Ikävä
      94
      824
    4. Sysmän "ilon päivä"

      Ja taas palaa hirveä määrä verorahoja, ihan turhaan soopaan. Eikö nämä jotka kuntapolitiikassa valittavat ja tuhoaa vaan
      Sysmä
      68
      772
    5. Uskon, että saataisiin kaikki selvitettyä

      Mutta yhteys on jäissä, minä olen jäässä, enkä osaa tai uskalla enää lähestyä. Se vaan on niin. Naiselta Jos ei ole hyvä
      Ikävä
      48
      723
    6. Pakko myöntää mies

      En mä aina ihan rehellinen sulle ollut
      Ikävä
      110
      629
    7. Joka ilta mietin

      sua❤️Mitä teet, missä meet? Kaipaatko yhtään? Yön tullen toivotan mielessäni sulle hyvää yötä ja aamuisin huomenet. Joka
      Ikävä
      27
      585
    8. Riitastako pelastaja

      Riitta jätti hakemuksen. Hyvä niin. On ainakin yksi mistä ottaa. Pertsa ei taida aikuistua koskaan ja Pekka hoiteli silt
      Kemijärvi
      34
      574
    9. Timo Vornanen.

      On siinäkin yksi täystampio. Eipä ihme, että persukannattajat sen eduskuntaan äänestikin.
      Maailman menoa
      46
      548
    10. Luottamus

      Luotan vain siihen mitä tapahtuu IRL. Anonyymipalstan vihjailut eivät merkitse minulle mitään.
      Ikävä
      94
      525
    11. mielikuva

      Mitä luulet hänen ajattelevan sinusta?
      Ikävä
      41
      501
    12. 32
      491
    13. Kadutko mies sitä miten reagoit?

      ..siihen sotkuun, jonka jälkeen mikään ei ole ollut kuin ennen. 🥺
      Ikävä
      48
      465
    14. Millaisen talvitakin haluaisit?

      Talveen vielä aikaa, mutta talvitakit tulleet kauppoihin. Millainen olisi unelmiesi talvitakki? Itse tykkäisin jostain
      Sinkut
      77
      451
    15. 32
      439
    16. Mikä kaivatullesi

      On tärkeintä elämässään?
      Ikävä
      31
      429
    17. Olisitko nainen ihan nolona

      Jos et saisikaan sitä nousemaan...
      Sinkut
      77
      422
    18. Onko kahvila Retro samalla pub???

      Netin mukaan anniskeluoikeudet. Käykö tuolla kaljoitteluporukkaa? Onko iltaviihdettä? Olen muuttamassa marraskuussa Kuhm
      Kuhmo
      8
      407
    19. Oletteko täyttä sataa?

      Muuta etunimienne kirjaimet numeroiksi. Esim. Mia ja Risto siitä tulee 8 numeroa. Laske ne yhteen . Paljonko tulee?
      Ikävä
      33
      400
    20. Iivari esittää poliisin tutkintaa

      Siikalatvan kunnanjohtaja Pekka Iivari on pannu ison pyörän liikkeelle. Entinen Kemijärven historian lyhimmän kaupunginj
      Kemijärvi
      21
      381
    Aihe