Avatar billede jimpp Nybegynder
01. marts 2006 - 15:22 Der er 8 kommentarer og
1 løsning

Hjælp til Element

Hej, jeg er bestemt ikke java haj, ikke destro mindre har jeg brug for hjælp :)

Jeg har en liste med noget udtræk fra en mysql db, fra denne liste skal man kunne vælge et element så baggrund farven og text farven ændre sig.

Jeg har lavet det sådan at hvert resultat/række bliver udskrevet i sin egen table. Det ser sådan her ud.

<table width="580px" class="list_tbl" onclick="this.className='list_tbl';" ondblclick="this.className='list_tbl_selected';" border="0" cellpadding="2" cellspacing="0">

Og det virker sådan set, bortset fra at der kun må være en tabel/element valgt af gangen.

Altså sådan at hvis man vælger resultat nummer 2, og derefter vælger resultat nummer 1, så skal resultat nummer 2 bruges til 'list_tbl' og et til 'list_tbl_selected'

Kan en eller anden ikke hjælpe mig lidt her :)
Avatar billede softspot Forsker
01. marts 2006 - 15:42 #1
Generelt bør du afstå fra at skifte class på et element, da det skal renderes igen hvilket ikke er særlig effektivt. Det være sagt så tager jeg lige udgangspunkt i det du har, så du (forhåbentlig) kan få en løsning der fungerer på kort sigt.

Du skal gemme den tabel som pt. er valgt i en global variabel og så bruge den til at deaktivere tabellen når en ny bliver valgt.

<script type="text/javascript">
var currentTable;

function changeTable(obj) {
  if(currentTable) currentTable.className == "list_tbl";
  if(obj) {
    currentTable = obj;
    currentTable.className == "list_tbl_selected";
  }
}
<script>

tabellerne skal så kodes således:

<table width="580px" class="list_tbl" onclick="changeTable();" ondblclick="changeTable(this);" border="0" cellpadding="2" cellspacing="0">
Avatar billede softspot Forsker
01. marts 2006 - 15:42 #2
UPS! Forkert operator - sorry. Det skal naturligvis være ne tildeling:

<script type="text/javascript">
var currentTable;

function changeTable(obj) {
  if(currentTable) currentTable.className = "list_tbl";
  if(obj) {
    currentTable = obj;
    currentTable.className = "list_tbl_selected";
  }
}
<script>
Avatar billede jimpp Nybegynder
01. marts 2006 - 17:47 #3
Fantastisk!


Kan man være så fræk at supplere op med endnu et spørgsmål :)

Hver tabel indeholder en form, som skal submittes men vi har kun en submit knap. Så jeg skal på en eller anden måde have data fra tabellen med i min submit evt. med form id eller form navn.

Bruger denne til at submitte: document.myform.submit();
Avatar billede softspot Forsker
01. marts 2006 - 17:56 #4
Du kan f.eks. sende navnet på den form som tabellen indeholder med over til changeTable-funktionen (huske at give dine forms entydige navne). Så kan den i samme ombæring holde styr på hvilken form der skal submittes når du trykker på submit-knappen. Din submit-knap skal så kalde den nye funktion jeg har defineret (den hedder doSubmit).

<script type="text/javascript">
var currentTable;
var currentForm;

function changeTable(obj,formName) {
  if(currentTable) {
    currentTable.className = "list_tbl";
    currentForm = "";
  }
  if(obj) {
    currentTable = obj;
    currentTable.className = "list_tbl_selected";
    currentForm = formName;
  }
}

function doSubmit() {
  if(currentForm != "") {
    document.forms[currentForm].submit();
  }
  else {
    alert('Du skal vælge en formular før du kan sende data');
  }
}
<script>

Dine tabeller skal så lige sende navnet på den indlejrede formular med til funktionen:

<table width="580px" class="list_tbl" onclick="changeTable();" ondblclick="changeTable(this,'form1');" border="0" cellpadding="2" cellspacing="0">
...
</table>

<table width="580px" class="list_tbl" onclick="changeTable();" ondblclick="changeTable(this,'form2');" border="0" cellpadding="2" cellspacing="0">
...
</table>

osv...
Avatar billede jimpp Nybegynder
01. marts 2006 - 19:01 #5
hmmm virker ikke rigtigt,muligt jeg gør det forkert:

Brudstykke af koden:

        while($ROW = mysql_fetch_array($SQL)) {
?>
<table width="580px" class="list_tbl" ondblclick="changeTable();" onclick="changeTable(this,'form<?php echo $ROW['id'] ?>');" border="0" cellpadding="2" cellspacing="0">
<form method="post" action="?func=rediger" name="form<?php echo $ROW['id'] ?>">
    <input type="hidden" name="fm_id" value="<?php echo $ROW['id'] ?>" />
    <input type="hidden" name="fm_navn" value="<?php echo $ROW['navn'] ?>" />
    <input type="hidden" name="fm_adr" value="<?php echo $ROW['adr'] ?>" />
    <input type="hidden" name="fm_post" value="<?php echo $ROW['postnr'] ?>" />
    <input type="hidden" name="fm_by" value="<?php echo $ROW['city'] ?>" />
    <input type="hidden" name="fm_tlf" value="<?php echo $ROW['tlf'] ?>" />
    <input type="hidden" name="fm_fax" value="<?php echo $ROW['fax'] ?>" />
</form>
<?php
  //slut på løkken
  }
?>

...

<img class="btm_img" style="margin-bottom:0px;" src="img/btm_rediger.png" border="0" onclick="document.form.submit()" />

Problemmet er at jeg ikke får id med ned til
document.form.submit()" eller?
Avatar billede softspot Forsker
01. marts 2006 - 19:11 #6
Ja, det er fordi din submitknap ikke kalder den funktion jeg lavede til samme formål. Gør sådan i stedet:

<img class="btm_img" style="margin-bottom:0px;" src="img/btm_rediger.png" border="0" onclick="doSubmit()" />
Avatar billede jimpp Nybegynder
06. marts 2006 - 11:21 #7
Sad lige i øjet, lig endeligt et svar - Mange tak for hjælpen!
Avatar billede softspot Forsker
06. marts 2006 - 11:25 #8
Velbekomme :)
Avatar billede softspot Forsker
15. marts 2006 - 21:08 #9
Tak for point :)
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