webForumDet fria alternativet

Loop problem (typ)?

7 svar · 515 visningar · startad av wborg

wborgMedlem sedan dec. 2003209 inlägg
#1

Hej,

Sitter med ett script som vid onMouseOver ska ändra färg på en hel kolumn
vilket funkar alldeles utmärkt men problemet ligger i att om jag har loopat ut fler än en tabell så ändras färgen på den kolumnen i alla tabeller samtidigt.

Jag vill att det bara ska gälla den tabell jag är onMouseOver på men jag antar
att problemet ligger i att scriptet ligger mitt i min asp loop som loopar ut mina tabeller från en access databas.

Se exempel här: http://www.stefanborg.com/sub/omo_column.asp

Källkoden finns att ladda ner här: http://www.stefanborg.com/sub/dl/omo_column.rar

Hoppas någon förstod vad jag gaggade om :D
/S

The_HulkMedlem sedan juni 20031 837 inlägg
#2

lägg till ett ID på dina tabeller.
skicka med ID i din on_cell funktion.

                function on_cell(direction, that, tableId) {
    
                    var tag = direction == 'column' ?    'td'
                            :                            'tr'
                            ;
    
                    var oTable = docuemnt.getElementById(tableId);

                    var alltags = oTable.getElementsByTagName(tag);
    
                    for(var i = 0; i < alltags.length; i++) {
                
                        if(direction == 'column' && alltags.item(i).className == that.className) {
                            alltags.item(i).style.backgroundColor = 'rgb(240, 240, 200)';
                        }
                        else if(direction == 'row' && alltags.item(i).className == that.className) {
                            alltags.item(i).style.backgroundColor = 'rgb(240, 240, 200)';
                        }
                    }
                }

gör samma förändring i den andre funktionen

wborgMedlem sedan dec. 2003209 inlägg
#3

Hulk,

jag får inte ditt script att fungera, jag har lagt till det där i båda funktionerna (on_cell, out_cell).

I denna del av scriptet provade jag oxå att lägga till ett s i getElement (s) ById

vilket inte heller hjälpte :(

var oTable = docuemnt.getElementById(tableId);

Några fler förslag??

/S

The_HulkMedlem sedan juni 20031 837 inlägg
#4

finns ingen metod som heter getElementsById()
Det kan bara finnas mer än ett med av ett ID.
Har du även lagt till ID på tabellerna?
ID och NAME är inte samma sak.
ID är unikt medans NAME kan mer än ett element ha samma.

Visa din modiferade kod får att vi ska kunna hjälpa dig mer.

blev visst lite felstavat, ska inte vara var

oTable = docuemnt.getElementById(tableId);

utan var

oTable = document.getElementById(tableId);

e:et hade visst kommit innan m:et

wborgMedlem sedan dec. 2003209 inlägg
#5

Hulk,

här kommer den modifierade koden.

http://www.stefanborg.com/sub/dl/omo_column.rar

och här är resultatet av den modifierade koden:
http://www.stefanborg.com/sub/omo_column.asp

/S

wborgMedlem sedan dec. 2003209 inlägg
#6

Hulk?

Hat du kikat på det? Hade jag missat något eller bara skrivit på fel ställe? Eller hittar du inget?

/S

The_HulkMedlem sedan juni 20031 837 inlägg
#7

du har inte lagt till något ID-attribut på table-taggen

<table align="center" border="1" style="border-collapse: collapse" bordercolor="1px solid #000000">

med ID-attribut

<table [b]id="table_1"[/b] align="center" border="1" style="border-collapse: collapse" bordercolor="1px solid #000000">

byt ut

onmouseover="on_cell('column', this, tableId);"

mot

onmouseover="on_cell('column', this, 'table_1');"
wborgMedlem sedan dec. 2003209 inlägg
#8

Hulk,

det löste sig på ett lite annorlunda sätt men det var tack vare din hjälp som vi lyckades komma fram till lösningen på det hela, vill du se hela koden så är det bara att hojta så lägger jag upp en packad fil med koden.

Tack för hjälpen
/S

133 ms totalt · 3 externa anrop · v20260731065814-full.fb544a5a
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
128 ms — hämta tråd, inlägg och bilagor (db)