Avatar billede nikolajdu Nybegynder
13. december 2004 - 16:52 Der er 33 kommentarer og
2 løsninger

finde outerhtml.outerhtml

Jeg har et input dims som jeg gerne vil finde 2 gange outerhtml på således at jeg kan skifte className på <span>  - Hvordan gør jeg lige det?

<span class="check1">
    <div id="inputBlock">
        <input type="checkbox" id="cid13071" value="13071" name="c13071" onclick="parent.playlistHandler(this.value,this.checked)"/>
    </div>
    <div id="listBlock">Private samler ind til r..</div>
</span>

/Nikolaj
Avatar billede skovenborg Nybegynder
13. december 2004 - 17:04 #1
hvorfor ikke bruger to gange parentNode, som netop giver span-elementet, hvis du går ud fra fx checkboxen. Men det skal lige siges at man ikke umiddelbart kan skifte klasser on-the-fly, da det kræver en gendannelse af dokument-træet.
Avatar billede roenving Novice
18. december 2004 - 16:05 #2
Man _bør_ ikke skifte class on-the-fly ...

-- og så er det ulovligt at have et block-level element (f.eks. div !-) inde i et inline (span) ...
Avatar billede nikolajdu Nybegynder
18. december 2004 - 18:23 #3
Jeg ved man ikke bør, men det er en løsning det virker, så skovenborg kast et svar :))

Kan godt være jeg er lidt tom, men hvad skulle jeg så gøre? <p>?
Avatar billede roenving Novice
18. december 2004 - 18:24 #4
Hvad med at bruge en div ?-)
Avatar billede nikolajdu Nybegynder
18. december 2004 - 18:29 #5
<div><div></div></div>?
Avatar billede roenving Novice
18. december 2004 - 18:32 #6
Ja, det er der ikke noget i vejen for:

<div class="check1">
    <div id="inputBlock">
        <input type="checkbox" id="cid13071" value="13071" name="c13071" onclick="parent.playlistHandler(this.value,this.checked)"/>
    </div>
    <div id="listBlock">Private samler ind til r..</div>
</div>

!-)
Avatar billede roenving Novice
18. december 2004 - 18:40 #7
-- og forøvrigt vil en udskiftning af className virke, men som Skovenborg fastslår medfører det en total genberegning af hele dokumentet udseende, hvilket for det første er lidt fjollet, når man bare ændrer noget på en lille bid af siden eller nogle få properties ...

For det andet er det en forbandet dårlig vane at få, for næste gang skal du skrive noget til en side med et ekstremt kompliceret DOM-træ, som derfor vil være sekund(er) om beregningen ...

-- og hvis du alligevel skal skrive noget javascript, er der da ikke meget forskel på:

function chProps(elm){
  elm.parentNode.parentNode.className = 'KarlsHest';
}

-- og:

function chProps(elm){
  var e = elm.parentNode.parentNode.style;
  e.color = 'blue';
  e.backgroundColor = '#fff';
  //evt. osv. !-)
}
Avatar billede nikolajdu Nybegynder
18. december 2004 - 18:54 #8
Det er i og for sig lidt for at undgå at skulle javascripte farverne ind - der er 4 farver som kan skifte. Men det ender nok med at være en bedre løsning.
Avatar billede roenving Novice
18. december 2004 - 18:56 #9
Det er i hvert fald den, du som standard bør gå efter !-)
Avatar billede skovenborg Nybegynder
18. december 2004 - 19:06 #10
hvis du virkelig har nogle komplicerede klasser så kan det måske være en fordel at lægge den ind i et array og bruge den når du vil skifte style:
<script type="text/javascript">
  var klasse1 = [["backgroundColor","blue"],["color","#fff"]];
  var klasse2 = [["backgroundColor","white"],["color","#000"]];
 
  function changeClass(elm,classArray) {
      for (i=0;i<classArray.length;i++) {
            eval("elm.style."+classArray[i][0]+" = '"+classArray[i][1]+"'");
      }
  }
</script>

<div class="check1">
    <div id="inputBlock">
        <input type="checkbox" id="cid13071" value="13071" name="c13071" onfocus="changeClass(this.parentNode.parentNode,klasse1);"  onblur="changeClass(this.parentNode.parentNode,klasse2);"/>
    </div>
    <div id="listBlock">Private samler ind til r..</div>
</div>
Avatar billede skovenborg Nybegynder
18. december 2004 - 19:08 #11
og jeg må hellere smide et svar - synes også roenving skal have en bid af kagen imho.
Avatar billede skovenborg Nybegynder
18. december 2004 - 19:08 #12
sådan der(jeg bliver dårligere og dårligere til det med svar) :-)
Avatar billede roenving Novice
18. december 2004 - 19:17 #13
-- og så mener jeg, at du kan bruge items på style, så vi kommer udenom eval (som også er en dårligt performende funktion !-)

  function changeClass(elm,classArray) {
      for (i=0;i<classArray.length;i++) {
            elm.style.items[classArray[i][0]] = classArray[i][1];
      }
  }
Avatar billede nikolajdu Nybegynder
23. december 2004 - 04:56 #14
roenving smider du ikke et svar - :))
Avatar billede olebole Juniormester
23. december 2004 - 05:21 #15
<ole>

... og da 'style' er et objekt - og objekter og associative arrays i JS er to repræsentationer én og samme datastruktur - kan du endda kalde med ganske almindelig array-notaion:
  elm.style[classArray[i][0]] = classArray[i][1];

Derudover er 'items' en collection, hvorfor det egentlig burde være skrevet:
  elm.style.items(classArray[i][0]) = classArray[i][1];
... just for the record  ;o)

/mvh
</bole>
Avatar billede olebole Juniormester
23. december 2004 - 05:25 #16
Et langt ude eksempel, som jeg ikke aner, hvad man skulle bruge til, er:

if (document["style"]["background-color"]=="red") {
  window["location"]["href"] = "http://www.eksperten.dk";
}
... bare for at vise, at der er fine muligheder for at læse/sætte dynamiske properties på et objekt. Strengene kan jo blot udskiftes med variabler
Avatar billede olebole Juniormester
23. december 2004 - 05:26 #17
arrrghh ...:
if (document["body"]["style"]["background-color"]=="red") {
Avatar billede olebole Juniormester
23. december 2004 - 05:28 #18
Avatar billede roenving Novice
23. december 2004 - 14:55 #19
Oki '-)
Avatar billede nikolajdu Nybegynder
24. december 2004 - 12:23 #20
super piger - I har as always været en god hjælp :))
Avatar billede nikolajdu Nybegynder
24. december 2004 - 12:25 #21
Og lidt karma til skovenborg da jeg ikke havde ham/hende i samlingen :))
Avatar billede nikolajdu Nybegynder
24. december 2004 - 12:29 #22
Ole overlever - Han har karma og vil med højst sandsynlighed bare beklage sig over pointfordelingen ;-)
Avatar billede olebole Juniormester
24. december 2004 - 12:44 #23
Tja ... sådan er det vel at være uden venner. Juleaftens dag - og ikke én eneste lille anledning til at brokke sig kan man få .... ØV - ØV - og atter ØV ...!!!  :((
Avatar billede nikolajdu Nybegynder
24. december 2004 - 12:47 #24
Nemlig ;-)
Avatar billede roenving Novice
24. december 2004 - 12:51 #25
-- og jeg takker for point ;~}
Avatar billede olebole Juniormester
24. december 2004 - 13:01 #26
Jamen, så rigtig Glædelig Jul til alle vennerne ... og du må også ha' en rimelig Jul, Nikolaj  *<();oD
Avatar billede nikolajdu Nybegynder
24. december 2004 - 13:18 #27
Jeg har allerede en forrygende jul - Jeg slipper nemlig helt og adeles for stres da jeg som altid er alene. Julen er hjertenes fest og ikke mere andefedt på mit hjerte - jeg har allerede fået rigeligt og jeg skal jo passe vægten. ;-)
Avatar billede roenving Novice
24. december 2004 - 13:26 #28
Tjah, du er jo ellers en af dem, som ikke ville tage skade af en par kg mere !-)
Avatar billede olebole Juniormester
24. december 2004 - 13:26 #29
Ja, sådan er det jo med os lavstammede, småfede, sydlandske typer  ;D
Avatar billede nikolajdu Nybegynder
24. december 2004 - 13:45 #30
Ork mand - Jeg har fået mere julemad og også lavet det selv i den her måned end gennemsnittet får. Sidste julefrokost 26 til spisning og mig alene i køkkenet og der manglede absolut intet. Folk blev sølle 16 timer, men dem der blev så længe kan formodenligt ikke huske det.
Avatar billede roenving Novice
24. december 2004 - 13:48 #31
,-)
Avatar billede olebole Juniormester
24. december 2004 - 13:57 #32
Hvem har fortalt dig, de blev så længe?  ;o)
Avatar billede nikolajdu Nybegynder
24. december 2004 - 14:07 #33
Det var mig der smed de sidste 6 ud - Man har desværre en eller anden idé om at man skal holde lidt øje med folk der vælter rundt i dit hjem, så man holder selv igen med ihvertilfald 1½ pils ;-)
Avatar billede olebole Juniormester
24. december 2004 - 14:12 #34
;)
Avatar billede skovenborg Nybegynder
24. december 2004 - 18:46 #35
øv, hvor går det stærkt lige fra morgenstunden af - nå, men glædelig jul alle sammen og tak for points og alt det der :-)
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