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ö.
JavaScript ja Elementille taustaan verrattuna käänteinen väri
8
139
Vastaukset
- 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
Käytä funktiota window.getComputedStyle(element). Tässä esimerkki, toiminnallisuus liitetty napin painallukseen:
https://jsfiddle.net/ecf6Lrh5/- 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
Persuja ei aluevaltuustoissa näy
Ei tunnu persuja paljon paikalliset asiat kiinnostavan, vaan ainoastaan ulkomaalaiset, joku Israel ja Trumpin fanitus.593727Päivän Riikka: Uudenkaupungin autotehdas hiljeni
Näin ne 100 000 uutta pysyvää ei-tempputyötä yksityiselle sektorille tämän hallituksen ansiosta syntyy. Työntekijöille j873118Riikka vie Suomen kohta ykköseksi työttömyyskisassa
Espanja: 10,5 % Suomi: 10,3 % Ruotsi: 9,3 % Kisa on tiukkaa, mutta Riikalla hyvä draivi päällä. Vasemmistolaisen päämin692326Mikä ihme teitä savolaisia tuossa
p*rs*reiässä niin kiinnostelee? Että siitä pitää päntönnään huutaa.141530Laita tunniste josta kaivattusi tietää sun kirjoittavan täällä
Joku yksilöity yhteinen juttu joka on sun ja kaivattusi välillä. Tuntomerkkinä esim. punainen pipopää, tonttu-ukko tai m651319- 871169
Varusmiehen kuolema
Ei ollut vahinko, ei aiheuttanut vaaraa muille, eikä ollut rikos, mitä jää jäljelle? Oliko kyseessä oman käden kautta lä291039Kumpaan rahat, mummojen vaippoihin vai Nalle WahIroosille?
JOS siis sinä saisit päättää?1991Huippu, kaupunki ostaa hotellin
Hyvä juttu meillä on oma hotelli iloitsi Pirtihirmukin. Nyt vaan rekryt päälle ja uusi henkilökunta. Tarvitaan tekijöitä55965- 47952