Just nu i M3-nätverket
Jump to content

Ändra färg på TD med Java i Explorer?


Vickan7

Recommended Posts

Jag har gjort en javascriptfunktion som fungerar utmärkt i Firefox, men inte i Explorer. Vad är det med denna raden som gör att Explorer vägrar att exekvera javan?

 

		document.getElementsByName("td_"+periodtyp+"_"+periodnr+"_"+anvandare_id)[0].style.background='#efc68a';

 

Det fungerar inte heller med backgroundColor istället för background.

 

Här är funtionen i sin helhet:

 

function fargaResursceller(periodtyp, periodnr, anvandare_id){

overbelaggningsgrad=document.getElementsByName("overbelaggning")[0].value/100;

//Färga cellen orange vid överbeläggning
if(periodtyp=="summa" && document.getElementsByName(periodtyp+"_"+periodnr+"_"+anvandare_id)[0].value>arbetstid_manad*overbelaggningsgrad){

    document.getElementsByName(periodtyp+"_"+periodnr+"_"+anvandare_id)[0].style.background='#efc68a';

    document.getElementsByName("td_"+periodtyp+"_"+periodnr+"_"+anvandare_id)[0].style.background='#efc68a';
}							
}

 

Link to comment
Share on other sites

name-attributet ska bara användas för formulärselement. Du vill nog snarare sätta id-attribut på dina td-element och använda getElementById.

 

http://developer.mozilla.org/en/docs/DOM:document.getElementsByName

The name attribute is only valid for a limited set of HTML elements, therefore getElementsByName() is only applicable to those elements.

 

http://developer.mozilla.org/en/docs/DOM:element.name

name gets or sets the name attribute of an DOM object, it only applies to the following elements: anchor, applet, form, frame, iframe, image, input, map, meta, object, option, param, select and textarea.

 

PS. Java och Javascript är två helt olika saker. Det du håller på med har inget med Java att göra.

 

Link to comment
Share on other sites

Tack för svaret!

Jag provade det förut också, men då fungerar det inte ens i Firefox...

Jag testade nu igen, men tyvärr...

 

<%
Response.Write "<td class='blad_ram' id='td_summa_1_" & rs("anvandare_id") & "'><input type='text' class='blad_ram' name='summa_1_" & rs("anvandare_id") & "' value='" & rs("month_1") & "' size='5' style='border-style: solid; border-width: 0px; text-align:right' onkeyup='charcheck(this);' onchange='resurssumma(this.name,1);'></td>" %>

 

Funktionen:

function fargaResursceller(periodtyp, periodnr, anvandare_id){

overbelaggningsgrad=document.getElementsByName("overbelaggning")[0].value/100;

//Färga cellen orange vid överbeläggning
   if(periodtyp=="summa" && document.getElementsByName(periodtyp+"_"+periodnr+"_"+anvandare_id)[0].value>arbetstid_manad*overbelaggningsgrad){

        document.getElementsByName(periodtyp+"_"+periodnr+"_"+anvandare_id)[0].style.background='#efc68a';

        document.getElementById("td_"+periodtyp+"_"+periodnr+"_"+anvandare_id)[0].style.backgroundColor='#efc68a';
  }	
}

 

Link to comment
Share on other sites

Kolla i felkonsollen i Firefox, så blir det nog lättare att felsöka. Ett annat väldigt praktiskt verktyg är DOM-inspektorn ( http://www.mozilla.org/projects/inspector/ ), för att få översikt över objektmodellen. Om man vill vara lite mer avancerad finns även debuggern Venkman: http://www.mozilla.org/projects/venkman/

 

getElementById returnerar bara ett enskilt element, inte en lista (som getElementByName). Du får alltså plocka bort indexet ([0]) från den raden.

 

Sen skulle jag nog i det här fallet istället skicka med input-elementet till fargaResursceller() (om möjligt; jag vet inte var/hur du kallar på den funktionen). Då behöver du inte använda nån getElement*-funktion för att hitta input-elementet, och för att få tag på td-elementet kan du använda parentNode ( http://developer.mozilla.org/en/docs/DOM:element.parentNode )

 

 

 

Link to comment
Share on other sites

Tusen tack för svaret! Det hängde på [0]. :-)

 

Javakonsolen är väldigt bra i många lägen, men ibland är det svårt att förstå vad felet är ändå...

 

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.



×
×
  • Create New...