Avatar billede bongo20 Nybegynder
06. december 2004 - 13:54 Der er 6 kommentarer og
1 løsning

tbl.newrow med onclick

Jeg opbygger dynamisk en tabel med javascript.

I denne tabel vil jeg gerne have en onclick på hver række.
sådan her ca:

var newRow = tbl.insertRow(0);
newRow.Id = sArray[0];
newRow["onclick"] = new Function("setUser(sArray[1])");

mit problem er at uanset hvilken række jeg trykker på så er det det første i array´et den tager med.

Dvs. jeg har f.eks. en liste med brugere:

Niels
Hans
Christian

Men uanset hvilken af de 3 jeg trykker på så er det navnet Niels den har med som parameter.

Nogen der kender noget til det?

:o)
Avatar billede schaefner Juniormester
06. december 2004 - 13:57 #1
Kan du ikke vise noget mere af din kode?
Avatar billede bongo20 Nybegynder
06. december 2004 - 14:05 #2
var tbl = document.getElementById('tblUsers');

for (i=0; i<arr.length; i++)
{   
    sArray = new Array();
    sArray = arr[i].toString().split(";");
    var newRow = tbl.insertRow(0);
    newRow.Id = sArray[0];

    newRow["onclick"] = new Function("setUser(sArray[1])");
    var newCell = newRow.insertCell(0);
    newCell.innerHTML = sArray[1];       
}


function setUser( userName )
{
    alert(userName);
}   

Det er altis Niels jeg får "alertet"
Avatar billede schaefner Juniormester
06. december 2004 - 14:37 #3
Er lidt i tvivl, men prøv:

for (i=0; i<arr.length; i++)

    sArray = new Array();
    sArray = arr[i].toString().split(";");
    var newRow = tbl.insertRow(0);
    newRow.Id = sArray[0];

    newRow["onclick"] = new Function("setUser(sArray[" + i + "])");
    var newCell = newRow.insertCell(0);
    newCell.innerHTML = sArray[i];     
}


function setUser( userName )
{
    alert(userName);
}
Avatar billede bongo20 Nybegynder
06. december 2004 - 14:52 #4
Nej det virker ikke, hvilket det heller ikke skulle ;o)

Det er 2 forskellige array´s jeg bruger her.

Her kan du se nøjagtig den samme streng taget fra sArray plads 1.
Den plads ( sArray[1] ) skifter for hver gang vi er i løkken.
Det kan jeg også godt se i denne alert:

alert(sArray[1]); // giver 'Niels' første gang, og derefter Hans og Christian.
newRow["onclick"] = new Function("setUser(sArray[1])");

men trykker jeg på de forskellige rows bygget op med det samme lige under alerten så giver de alle 'Niels' i alerten !?!?!?????
Avatar billede thomas_yde Nybegynder
07. december 2004 - 11:16 #5
hvad indeholder arr ?
Er det din liste med brugere? fx. niels;Hans;Christian
Avatar billede thomas_yde Nybegynder
07. december 2004 - 11:17 #6
Smid noget mere kode så vi kan se hvad det hele indeholder
Avatar billede bongo20 Nybegynder
07. december 2004 - 13:23 #7
jeg har set at på mange andre forums har man diskutteret det, og det giver åbenbart problemer når man vil lave onclick med parametre i en dynamisk opbygget html.

Jeg har løst det i stedet ved at lade den kode der opbyggede mit array opbygge en tabel med alt indholdet i stedet for, det giver mig mulighed for at styre hvilke parametre der skal med til funktionen...
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