Avatar billede dugi Nybegynder
01. februar 2005 - 19:04 Der er 6 kommentarer

Problemer med udskift af billed

Hej,

Jeg har lavet følgende funktion:

function changeColor(thiscolor,newcolor)
{
  if (document.getElementById('forrige').src == 'images/'+thiscolor+'/left_arrow.gif')
  { document.getElementById('forrige').src = eval('images/'+newcolor+'/left_arrow.gif'); }
  else if (document.getElementById('forrige').src == 'images/'+thiscolor+'/left_arrow_alpha.gif')
  { document.getElementById('forrige').src = eval('images/'+newcolor+'/left_arrow_alpha.gif'); }

  if (document.getElementById('naeste').src == 'images/'+thiscolor+'/right_arrow.gif')
  { document.getElementById('naeste').src = eval('images/'+newcolor+'/right_arrow.gif'); }
  else if (document.getElementById('naeste').src == 'images/'+thiscolor+'/right_arrow_alpha.gif')
  { document.getElementById('naeste').src = eval('images/'+newcolor+'/right_arrow_alpha.gif'); }
}

Men den gider intet gøre.
Har kigget rundt her på Eksperten, men kan ingen løsning finde :(

Håber i kan hjælpe.
På forhånd tak

MVH
Morten
Avatar billede jakobdo Ekspert
01. februar 2005 - 19:46 #1
Må jeg se koden hvor du kalder funktionen?

Jeg forstår ikke din if!

Du siger hvis
color = thiscolor
sæt color = newcolor
ellers hvis color = thiscolor
sæt color = newcolor

Skal du ikke bytte om?
Avatar billede dugi Nybegynder
01. februar 2005 - 20:01 #2
Altså jeg har brugt din artikel før om at skifte stylesheet.
Så skal jeg bruge nuværende stylesheet, som er "thiscolor", til at difinere om den knap (der skal udskiftes) er alpha eller ik alpha, også skal den erstattes med den nye stylesheet som er "newcolor".

Sådan kalder jeg funktionen:
<a href="java script: changeColor(1,1);">

Billederne som skal erstattes ser således ud:
<img id="forrige" src="images/pink/left_arrow_alpha.gif" style="12px; height: 25px">
<img id="naeste" src="images/pink/right_arrow.gif" style="12px; height: 25px">


selve sitet ser sådan her ud:
http://www.yourmag.dk/The.O.C/ - så kan du nok bedre forstå hvad jeg vil.


De to pile under "Episode Guide" som jeg skal have udskiftet :)
Avatar billede jakobdo Ekspert
01. februar 2005 - 20:40 #3
Nu er jeg ikke helt med!
Du skifter stylesheet fra mange stylesheets...
Hvor mange skal den skifte imellem din swap?
Avatar billede dugi Nybegynder
01. februar 2005 - 21:24 #4
Nej altså.

Pink blir valgt som standard, så vælger du et stylesheet nede til venstre.
Den funktion dernede skifter stylesheet til den nye farve. I funktion skal den så også skifte de to pile under "Episode Guide" da det er alm. billeder og ikke noget fra stylesheet.

De forskellige stk. grafik ligger i hver sin mappe.
Billedet sksl have ændret mappen, så den passer resten af grafikken.
Avatar billede dugi Nybegynder
01. februar 2005 - 21:49 #5
The O.C.
|
|- index.htm
|- /styles
|- /js
|- /images

Styles
|
|- style_1.css (pink)
|- style_2.css (blå)
|- style_3.css (grøn)
|- style_4.css (orange)
|- style_5.css (gul)
|- style_6.css (rød)


Images
|
|- /1 (indeholder pink grafik)
|- /2 (indeholder blå grafik)
|- /3 (indeholder grøn grafik)
|- /4 (indeholder orange grafik)
|- /5 (indeholder gul grafik)
|- /6 (indeholder rød grafik)


I min index, loader jeg alle styles i <head> (for at få id's og classes preloaded), og derefter vælger jeg style_1.css som standard.

Når jeg skifter farve, gør jeg det via denne funktion:
function changeColor(thiscolor,newcolor)
{
  if (document.getElementById('forrige').src == 'images/'+thiscolor+'/left_arrow.gif')
  { document.getElementById('forrige').src = eval('images/'+newcolor+'/left_arrow.gif'); }
  else if (document.getElementById('forrige').src == 'images/'+thiscolor+'/left_arrow_alpha.gif')
  { document.getElementById('forrige').src = eval('images/'+newcolor+'/left_arrow_alpha.gif'); }

  if (document.getElementById('naeste').src == 'images/'+thiscolor+'/right_arrow.gif')
  { document.getElementById('naeste').src = eval('images/'+newcolor+'/right_arrow.gif'); }
  else if (document.getElementById('naeste').src == 'images/'+thiscolor+'/right_arrow_alpha.gif')
  { document.getElementById('naeste').src = eval('images/'+newcolor+'/right_arrow_alpha.gif'); }

  document.getElementById("color1").href = 'java script: changeColor('+newcolor+',1);';
  document.getElementById("color2").href = 'java script: changeColor('+newcolor+',2);';
  document.getElementById("color3").href = 'java script: changeColor('+newcolor+',3);';
  document.getElementById("color4").href = 'java script: changeColor('+newcolor+',4);';
  document.getElementById("color5").href = 'java script: changeColor('+newcolor+',5);';
  document.getElementById("color6").href = 'java script: changeColor('+newcolor+',6);';

  newcolor=newcolor-1;
  if(document.styleSheets)
  {
    for(var i=0; i < document.styleSheets.length; i++)
    {
      if(i != newcolor)
      {
        document.styleSheets[i].disabled=true;
      }
      else
      {
        document.styleSheets[i].disabled=false;
      }
    }
  }
}


Funktionen vælger så den stylesheet som passer til "newcolor (som indeholder et tal fra 1-6)" og vælger den stylesheet som har det tal som er i newcolor.

Det som jeg skal have gjort.
2 billeder i min index blir _IKKE_ hentet gennem mine stylesheets men derimod med <img>. Dette billede skal jeg have ændret samtidig som når man vælger en ny stylesheet så den passer til det valgte tema.

Jeg prøver at tjekke først om <img> har filnavnet "left_arrow_alpha" fordi jeg har to billeder, et hvor den er gennemsigtig og ikke gennemsigtig. Den skal derfor finde ud om den er gennemsigtig eller ikke er, også skal den erstatte stien. Stien er "images/1/left_arrow_alpha.gif" som standard. Jeg skal have ændret /1/ til det nummer som den nye valgte stylesheet indeholder, altså "newcolor". Jeg bruger "thiscolor" til at tjekke det nuværende billedes sti.

Forstår du? :)
Avatar billede roenving Novice
02. februar 2005 - 03:01 #6
En src-property vil i virkeligheden oftest indeholde den virkelige sti, så du skal:

  if (document.getElementById('forrige').src.indexOf('images/'+thiscolor+'/left_arrow.gif')>-1) ...
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester