Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Js taustaväri räpsytystä

Sivun loppuun

pistemies [27.09.2011 23:06:40]

#

Mietin mistähän johtuu yksi pikku ongelma.
Functiossa on nämä rivit, jotka toimii ekalla kerralla.

document.getElementById(eka).style.backgroundColor="silver";
document.getElementById(toka).style.backgroundColor="silver";

Kyseessä on taulukon rivin solut (josta hiukan aiemmin kirjoitin).
Nuo taustavärit tulevat, kun rivi merkitään poistettavaksi. Kun poistaminen peruutaan, tausta muuttuu valkoiseksi. Mutta jos sen jälkeen päättää sittenkin valita uudestaan tuon saman rivin poistettavaksi, niin tausta ei enää vaihdukaan harmaaksi. Miten tuon onnistuisi korjaamaan?

jlaire [28.09.2011 00:27:24]

#

Miten muutat taustan takaisin valkoiseksi?

lainaus:

http://catb.org/~esr/faqs/smart-questions.html

The most effective way to be precise about a code problem is to provide a minimal bug-demonstrating test case. What's a minimal test case? It's an illustration of the problem; just enough code to exhibit the undesirable behavior and no more.

Yucca [28.09.2011 08:10:35]

#

pistemies kirjoitti:

Mietin mistähän johtuu yksi pikku ongelma.
Functiossa on nämä rivit, jotka toimii ekalla kerralla.

document.getElementById(eka).style.backgroundColor="silver";
document.getElementById(toka).style.backgroundColor="silver";

Sillä välin kun odottelemme, että lähetät ongelman kunnollisen kuvauksen (ks. jlairen kommenttia), voisi vaikkapa pitää pienen esitelmän.

Ohjelmoinnin kymmeneen käskyyn kuuluu, tai ainakin pitäisi kuulua, seuraava:

Älä käytä samaa literaalia kahdesti samassa merkityksessä.

Jos siis on tarkoitus muuttaa kahden solun taustaväri tietyksi samaksi väriksi, älä kirjoita kaksi kertaa "silver". Kirjoita "silver" (tai numerokoodi - värien nimet eivät ole ollenkaan niin hyödyllisiä kuin luullaan) yhteen kertaan ja käytä tätä arvoa sitten siellä missä tarvitaan. Sen voi sijoittaa muuttujaan tai olion ominaisuudeksi, välittää parametrina tms. Kunhan et kopioi literaalia.

Jo Hammurabin hallinnon tietojenkäsittelyosastolla havaittiin, että suuri osa virheistä johtui literaalien kopioinnista. Ennemmin tai myöhemmin nimittäin joku muuttaa vain yhden literaalin esiintymistä vaikka on tarkoitus muuttaa kaikki, tai joku muuttaa eri esiintymiä vahingossa eri tavalla.

pistemies [28.09.2011 09:26:07]

#

Voi hitsi minun kanssa!
Tajusin virheen tuossa ennen aamua.

Kuten edellisessä viestiketjussani kävi ilmi, laitoin sinne chgDelrow-funktioon uudestaan kutsun delRow-funktioon, ja enkä tietenkään muistanut siihen kirjoittaa noita argumentteja "eka,toka". Taidan muuttaa sen siten kuin ajattelin, eli onDblClick, niin se voi olla kokoajan "näkösällä".

jlaire: tuossa cghDelrow funktioon lisäsin nuo samat rivit ja värikisi "white". En kokeillut, olisiko tominut jos väri olisi ollut pelkkää tyhjää "".

Mutta kuten tuosta ulkoasusta näkee, koko homma on vielä testausvaiheessa.
Tarkoitus on, että asetan funktion argumentiksi sarakkeiden määrän. Ja sitten silmukassa asetan tuon tauastavärin koko taulukon leveydelle.
Miten tuo silmukassa menisi?
Olisiko tämä suunnilleen toimiva:

  soluid = arr[i];
  document.getElementById(soluid).style.backgroundColor="silver";

En ole vielä testaillut mitään eilisillan jälkeen.

pistemies [28.09.2011 09:57:45]

#

pistemies kirjoitti:

Olisiko tämä suunnilleen toimiva:

  soluid = arr[i];
  document.getElementById(soluid).style.backgroundColor="silver";

En ole vielä testaillut mitään eilisillan jälkeen.

Nyt on testattu ja toimiihan se noin... kiitoksia kiinostuksesta vaikka js ei ole kielenä aina kaksinen.

jlaire [28.09.2011 17:18:01]

#

Olipas taas hyödyllinen ketju. Kun tulevaisuudessa joku selaa vanhoja keskusteluja ja etsii ratkaisua ongelmaansa, tästä on varmasti paljon apua.

Saahan sitä kieltä syyttää, jos haluaa. Mutta todella harvoin tulee vastaan ongelmia, joissa on oikeasti kyse JavaScriptin rajoitteista. Yleensä kieltä käytetään huonosti tai ihan vaan väärin.

pistemies [28.09.2011 20:08:34]

#

jlaire kirjoitti:

Yleensä kieltä käytetään huonosti tai ihan vaan väärin.

Joo-o. Kun aina ei ole sitä kielipäätä.

Metabolix [28.09.2011 20:21:54]

#

Kyllä JS aina PHP:n voittaa.

Värien kirjoittaminen JS-koodin (tai HTML-koodin) sekaan on huono tapa, jos väri itsessään ei ole olennainen vaan sillä vain merkitään jotain toista asiaa (kuten tässä tapauksessa rivin poistamista). Ilmeisesti myös muutat koko rivin väriä, jolloin soluilla ei pitäisi olla asian kanssa mitään tekemistä, vaan muutos pitäisi tehdä tr-elementtiin. Järkevintä olisi siis muuttaa vain rivin luokkaa (tr.className) ja hoitaa ne väriasiat CSS-koodilla.


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta