Avatar billede superraider Nybegynder
22. november 2004 - 20:37 Der er 30 kommentarer og
2 løsninger

create objet og innerhtml

jeg mener det er noget der ligner overskreften jeg skal bruge.

jeg har f.eks. 5 variabler

var en,to,tre,fire,fem,seks¨

jeg befinder mig i en iframe(frame1) og vil gerne skrive i en anden iframe, så jeg laver

parent.frames['frame2'].(resten ved jeg ikke)

den skal så skrive
<tr><td>en</td><td>to</td> osv.

håber det var nok
Avatar billede olebole Juniormester
22. november 2004 - 20:43 #1
<ole>

Det var det ikke ... hvordan ser tabellen ud, det skal indskrives i - og skal det ske i begyndelsen af tabellen eller i slutningen?

/mvh
</bole>
Avatar billede superraider Nybegynder
22. november 2004 - 20:44 #2
<table>
her skal det være
</table>

den er ret tom nu. jeg kal bare have princippet i hvordan man gør
Avatar billede skovenborg Nybegynder
22. november 2004 - 20:55 #3
det ville nok hjælpe hvis du gav tabellen en id:
<table id="tabel">

For så kan du skrive:
parent.frames['frame2'].document.getElementById("tabel").innerHTML = "<tr><td>"+en+"</td><td....";
Avatar billede olebole Juniormester
22. november 2004 - 21:02 #4
skovenborg >> Det må du lige vise et eksempel, du har testet  ;o)
Avatar billede skovenborg Nybegynder
22. november 2004 - 21:18 #5
hehe, forstår godt den lille hentydning. Faktisk virker det fint nok i Mozilla, men IE giver (hos mig i hvert fald) en runtime-error. Af en eller anden grund jeg ikke selv er klar over, så accepterer IE åbenbart ikke at sætte innerHTML på tabel-elementer på den måde.
Avatar billede olebole Juniormester
22. november 2004 - 21:33 #6
Det er jo lige det ... og det hjælper ikke engang at sætte ind i det rigtige element - som jo er TBODY-elementet (der altid implicit eksisterer i en tabel)  ;o)

superraider >> Løsningen er afhængig af præcist, hvordan det skal bruges - så 'princippet i, hvordan man gør' duer ikke rigtig her. Du må være lidt mere specifik  :)
Avatar billede superraider Nybegynder
22. november 2004 - 22:52 #7
ved ikke hvordan, jeg kan værere mere specifik. jeg vil skrive "<tr><td>"+en+"</td><td...."; til en tabel.

mere præsis er det ikke
Avatar billede skovenborg Nybegynder
23. november 2004 - 00:32 #8
tja, man kunne jo ikke bruge innerHTML på den måde jeg foreslog lige før - desværre, men sandt :-S

Man kunne så ty til lidt mere raffinerede metoder:

Side1-hvor man skal sætte teksten ind fra:
<script type="text/javascript">
  var en,to,tre,fire,fem,seks;
  en = to = tre = fire = fem = seks = "hej";
  function addTextToTable(ramme,tblId) {
        tbl = parent.frames[ramme].document.getElementById(tblId);
        cells = new Array();
        row = tbl.insertRow(tbl.rows.length);
        if (row) {
                for (i=0;i<6;i++) {
                    cells[i] = row.insertCell(i);
                }
        }
        cells[0].innerHTML = en;
        cells[1].innerHTML = to;
        cells[2].innerHTML = tre;
        cells[3].innerHTML = fire;
        cells[4].innerHTML = fem;
        cells[5].innerHTML = seks;
  }
</script>

<form>
<input type="button" onclick="addTextToTable('frame2','tabel');"/>
</form>

Og så den side som outputtet skal smides ind i:
<table id="tabel">
</table>
Avatar billede skovenborg Nybegynder
23. november 2004 - 00:34 #9
det ville dog være meget lettere hvis blot du havde lavet et array med dine variabelværdier i, fx:
var entilseks = new Array();
entilseks[0] = "Første";
entilseks[1] = "Anden";
// osv.
function addTextToTable(ramme,tblId) {
        tbl = parent.frames[ramme].document.getElementById(tblId);
        row = tbl.insertRow(tbl.rows.length);
        if (row) {
                for (i=0;i<6;i++) {
                    cell = row.insertCell(i);
                    cell.innerHTML = entilseks[i]
                }
        }
  }
Avatar billede superraider Nybegynder
23. november 2004 - 10:40 #10
tja, så ska jeg vil ind og give den tabel id's, jeg har gør det på en lidt anden måde. post et svar og du får point for det der
Avatar billede superraider Nybegynder
23. november 2004 - 10:48 #11
her er en løsning som virker i IE
parent.frames['frame3'].documet.write('hejø');
Avatar billede olebole Juniormester
23. november 2004 - 11:03 #12
Som du ser, er det vigtigt at være specifik i sine ønsker. Havde vi vidst, du bare kunne overskrive hele dokumentet, var det forslag kommet efter 30 sekunder. Der er ingen grund til at sidde og komme med forslag, hvis det er det rene gætteri - det er rent spild af tid  ;o)
Avatar billede superraider Nybegynder
23. november 2004 - 14:10 #13
havde ikke set det overskrev hele dokumentet.
Jeg bruger skocenborgs anden løsning.

tak
Avatar billede superraider Nybegynder
23. november 2004 - 14:13 #14
ramme er lig med frams-navnet og tblId er det min table's id?
Avatar billede superraider Nybegynder
23. november 2004 - 14:32 #15
har fået det til at virke
Avatar billede superraider Nybegynder
23. november 2004 - 14:33 #16
Men hvordan kan jeg ændre på udseende af min tabel, sådan noget som border osv?
Avatar billede olebole Juniormester
23. november 2004 - 14:38 #17
Hvor og hvornår vil du ændre det?
Avatar billede superraider Nybegynder
23. november 2004 - 14:43 #18
jeg tror ikke jeg kan bruge det her aligevel, løber i nogle større problemmer. I får nogle point og så lukker jeg.

Men du kan måske lige svare på et lille spørgsmål først.

Hvis jeg har et html dokument(frame2). I min head del der har jeg et sted hvor jeg har
<SCRIPT language=javascript type=text/javascript>

</script

er det muligt at fra frame 1 at tilskrive et array i frame2. som så kommer til at ligge i det ovenviste <script>
Avatar billede olebole Juniormester
23. november 2004 - 14:56 #19
parent.frames.frame2.myArray = new Array("element 1", "element 2");
Avatar billede superraider Nybegynder
23. november 2004 - 15:00 #20
så let, og så kan jeg med et script senere på siden få værdiere der fra.
Avatar billede superraider Nybegynder
23. november 2004 - 15:01 #21
svar og der er point
Avatar billede olebole Juniormester
23. november 2004 - 15:19 #22
yups ... så tilhører array'et dokumentets variabel-scope (altså dokumentet i 'frame2') ... easy as that  ;o)

Jeg modtager gerne points - men må insistere på at dele dem med skovenborg. Jeg ville mene, at 30 for skovenborgs arbejde og 20 for mit sædvanlige - omend kvalificerede - brokkeri  ;D
Så har jeg i hvert fald fået mere end rigeligt  :)

skovenborg >> Kast også lige et svar
Avatar billede superraider Nybegynder
23. november 2004 - 15:23 #23
i får lige meget, når du lige har svaret på det sidste spørgsmål- så er du bare dejlig

Er der en måde, hvorpå jeg kan, hvis der er oprettet et array, kan tilskrive en værdi mere til den.

faktisk er der to spørgsmål. kan man også slette en værdi igen i arrayet, så hvis man sletter array[4] så smutter array[5] nedpå nr 4s plads
Avatar billede skovenborg Nybegynder
23. november 2004 - 16:20 #24
hvor er det typisk at man lige kommer hjem fra skole og så ligger der bunkevis af kommentarer uden at man har haft mulighed for at svare tilbage ;-) Nåja, men jeg er glad for I har fundet ud af det i fællesskab.

Angående at tilføje og fjerne værdier fra et array, så prøv at kigge på dette lille eksempel:
<script type="text/javascript">
  function printArray(a) {
        var str = "";
        for (i in a) {
            str += i+" => "+a[i]+"\n";
        }
        return str;
  }
  var arr = new Array("element 1","element2");
  alert(printArray(arr));
  // Tilføjer værdi:
  arr[arr.length] = "element 3";
  alert(printArray(arr));
  // Fjerner "element2":
  arr.splice(1,1);
  alert(printArray(arr));


</script>
Avatar billede skovenborg Nybegynder
23. november 2004 - 16:21 #25
skal nok huske at svare denne gang ;-)

arr kan selvfølgelig erstattes med parent.frames.frame2.myArray. Her ville det evt. være en fordel at fx gemme parent.frames.frame2 i en selvstændig variabel, så du skrev:
var pFrame = parent.frames.frame2;
pFrame.myArray = new Array("element 1", "element 2");
osv.
Avatar billede superraider Nybegynder
23. november 2004 - 16:24 #26
har fundet ud af at adde en, men har lidt problemmer.

jeg skriver en ny værdi til et array, og så vil jeg gerne have det vist. lige nu bruger jeg denne her
<SCRIPT language=javascript type=text/javascript>
function hejej(){
Size = Navn.length
document.write(Navn[Size-1])
return false
}
</script>
<input type="button" onClick="return hejej()">

men den sletter jo altindhold på siden, jeg vil bare gerne have at den skriver den nyværdi, og når jeg tilføjer en nyværdi så skal den så også skrives.

det ville være najs, hvis jeg her
<SCRIPT language=javascript type=text/javascript>
Size = parent.frames['frame3'].Navn.length
parent.frames['frame3'].Navn[Size] = '<% =madvare("Navn") %>'

</script>
kan få den til at skrive den ud med det samme
Avatar billede olebole Juniormester
23. november 2004 - 16:24 #27
... og nu vi har fat i de indbyggede array-funktioner, kan vi jo ligesågodt erstatte:
  arr[arr.length] = "element 3";
med:
  arr.push("element 3");
Avatar billede olebole Juniormester
23. november 2004 - 16:26 #28
Bruger du document.write(), efter dokumentet er loaded, overskrives det altid.
Hvor skal resultatet skrives ud henne?
Avatar billede superraider Nybegynder
23. november 2004 - 16:49 #29
i får point nu, jeg skal ikke trække mere på jer nu. løste det ved at lave et lille iframe, som indeholder noget javascript som tilskrives den anden iframe, hver gang det lille iframe loades.
Avatar billede superraider Nybegynder
23. november 2004 - 16:49 #30
tak for hjælpen
Avatar billede olebole Juniormester
23. november 2004 - 17:02 #31
... anytime  :)
Avatar billede skovenborg Nybegynder
23. november 2004 - 17:19 #32
det var så lidt da :-)
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