webForumDet fria alternativet

Loop problem (typ)?

ASPur ASP

7 svar · 515 visningar · startad av wborg

Medlem sedan dec. 2003209 inlägg
Frågan#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

Medlem 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

Medlem 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

Medlem 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

Medlem 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

Medlem 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

Medlem 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');"
Medlem 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

146 ms totalt · 3 externa anrop · v20260731065814-full.55e59744
141 ms — hämta forumlista (db)
0 ms — hämta statistik (cache)
139 ms — hämta tråd, inlägg och bilagor (db)