Avatar billede suntrip Nybegynder
23. januar 2003 - 03:14 Der er 21 kommentarer og
2 løsninger

DOM problem

Hejsa

jeg sider og roder med at få sat nogle elementer ind.... det fungere også fint så længe det er på forsøg stadiet

når jeg så vil implemtere det hvor det nu skal bruges... så er gider den ikk rigtig at være med mere


document.getElementById("textfelt").insertBefore(elemNew, elemTxtBox);

f.eks så mener den at det er null or not and obejct... og jeg ved garanti at jeg har et <div> felt med et id=textfelt og alt det pjat....og der er ingen stavefejl eller noget i stil..

div feltet er pakket ind i nogle <table> og jeg tror at mit problem er at jeg ikke kan finde ud af at accesse den div feltet rigtigt...

for som sagt i mit forsøg hvor div feltet bare sad i body'en der havde den intet problem med det....


håber der er en ninja til sådan noget DOM sjov og som kan forklare mig hvad jeg gør forkert
Avatar billede bearhugx Nybegynder
23. januar 2003 - 03:28 #1
og du har fundet elemTxtBox, samt oprettet elemNew via document.createElement() ???
Avatar billede bearhugx Nybegynder
23. januar 2003 - 03:47 #2
textfelt har et child-element, som er fundet via document.getElementById eller lignende...

Jeg har en mini-eksempel, som lige er bikset sammen - det virker hos mig --- Det indsætter elementer af typen HR (horizontal ruler) umiddelbart inden et P-tag, jeg har (som har id="end")

<html>
  <script>
    function testInsertBefore() {
      var child = document.createElement("hr");
      var theEnd = document.getElementById("end");
      document.getElementById("test308637").insertBefore(child, theEnd);
    }
  </script>
  <body>
    <span onClick="testInsertBefore();"> InsertBefore </span>
    <div id="test308637" style="border:1px #000000 solid;"><p id="end"/></div>
  </body>
</html>
Avatar billede bearhugx Nybegynder
23. januar 2003 - 03:54 #3
Kan jeg evt. få den html-kode, hvor dit textfelt-DIV vises _sammen_ med tabelllen (har haft et DIV/TABLE problem idag :-)

evt prøv :
  alert( document.getElementById("textfelt").id );

Her skulle den gerne alerte "textfelt" tilbage ... Hvis den derimod melder "Et objekt var ventet" så er det tydeligt at der har været problemer med at få fat i div'en
I det tilfælde, så prøv alert( document.getElementById("textfelt") );
Hvis den melder "null" - så er den sikker :-)

Hvad er det, du indsætter ???

Som jeg nævnte først - jeg vil gerne se noget kode! det gør det en del lettere :-)
Avatar billede suntrip Nybegynder
23. januar 2003 - 12:08 #4
ville åbenbart ikk gemme det først gang.. jeg skriver det lige igen

alert( top.document.getElementById("textfelt").id );

når jeg gør sådan der... så returnere den textfelt.. intet problem der...

try{
top.document.getElementById("textfelt").insertBefore(elemNew, elemTxtBox);
} catch( e ) { /* do nothing*/ alert (e.message); }


men når jeg gør det der.... så siger den Invalid Argument :(
Avatar billede bearhugx Nybegynder
23. januar 2003 - 13:31 #5
Jeg kan dog forstå at den skriver Invalid Argument ---Det er jo ikke Java du programmerer --- du er igang med at konstruere noget Javascript (Der er STOR forskel)

Er det muligt at se noget kode??? Det ville gøre det _meget_ at finde løsningen til dig --- Det med kun at skrive én linie virker ikke så godt --- for man har jo så ingen kontekst, som man kan læse fejlen ud af....
Avatar billede suntrip Nybegynder
23. januar 2003 - 13:38 #6
var main = document.getElementById('textfelt');

var elemPara = document.getElementById("textfelt");
var elemTxtBox = document.getElementById("textarea1");

var newText = ""; //textline

var newTxtNode = document.createTextNode(newText);
var elemNew = document.createElement("div");

elemNew.appendChild(newTxtNode);

elemNew.id = "d"+number;

//alert( top.document.getElementById("textfelt").id );
alert(elemNew);
alert(newTxtNode);
try{
top.document.getElementById("textfelt").insertBefore(elemNew, elemTxtBox);


alert(top.document.getElementById("d0").id);


blop = 'd'+number;
alert(blop);
top.document.getElementById(blop).innerHTML = textline;

jeg er nu kommet frem til at den mener  top.document.getElementById(blop) er null... selv jeg alerter den og den siger at den findes :(
Avatar billede bearhugx Nybegynder
23. januar 2003 - 13:51 #7
hvornår bliver "number" sat i koden ?

Fjerne lige det TRY-statement, du forsøger at lave .... det er JavaScript - ikke Java..

Kan jeg læse udfra din kode, at du gerne vil indsætte nogle DIV-elementer foran dit "textarea1" ?
Avatar billede bearhugx Nybegynder
23. januar 2003 - 13:52 #8
og lad vær med at bruge top i top.document, med mindre dine data er i en anden frame, en den som javascript-koden er i...
Avatar billede bearhugx Nybegynder
23. januar 2003 - 13:53 #9
evt. også lad mig se HTML koden omkring textfelt / textarea1
Avatar billede suntrip Nybegynder
23. januar 2003 - 14:05 #10
det er i en anden frame....

kom lige i tanken om at jeg ikke har noget  textarea1 så har derfor ændret det til det her

top.document.getElementById("textfelt").insertBefore(elemNew, elemPara);



HTML DELEN---- har ikk taget det hele med... kun det der skal bruges
<body style="margin: 0px">
<table width=100% height=100% bgcolor="5FC8FF" border=0 cellpadding=0 cellspacing=0>
<tr>
    <td>
        <table height=100% height=100% cellpadding=0 cellspacing=0 border=0>
        <tr>
            <td height=62></td>
            <td width=100% height=62></td>
        </tr>
        </table>
    </td>
</tr>

<tr>
    <td height=100%>
        <table height=100% width=100% bgcolor="5FC8FF" cellpadding=0 cellspacing=0 border=0>
            <tr>
                <td width="10"></td>
                <td valign=top>
                    <table height=100% width=100%  valign=top bgcolor="B3E3FC" cellpadding=0 cellspacing=0 bordercolorlight="#007EC0" bordercolor="#007EC0" border=1 >
                        <tr>
                            <td>
                           
                                <div id=textfelt style="overflow: auto"></div>           
                           
                            </td>
                        </tr>
                    </table>
                </td>
Avatar billede olebole Juniormester
23. januar 2003 - 14:10 #11
<ole>

suntrip >> Prøv at uploade din kode og smid URL'en her ... så slipper man for at lege Lykkehjulet  ;o)

bearhugx >> JavaScript kan nu godt håndtere try/catch statements. men det kræver selvfølgelig, de bliver udført korrekt  :)

/mvh
</bole>
Avatar billede suntrip Nybegynder
23. januar 2003 - 14:22 #12
olebole>> jeg har desværre inden steder at smide det op lige i øjeblikket... sidder og laver det hele på min egen box...
Avatar billede olebole Juniormester
23. januar 2003 - 14:34 #13
Der er masser af steder, du kan få lidt gratis plads ved en hurtig og simpel tilmelding. Det er udmærket til denne slags ting. Det ender hurtigt med at blive en voldsom lang tråd og en masse fægten frem og tilbage  ;o)
/mvh
Avatar billede suntrip Nybegynder
23. januar 2003 - 15:11 #14
http://medlem.jubii.dk/slammerjoe/


værgso.... håber at det kan give en bedre ide om hvad det er jeg prøver på :)
Avatar billede olebole Juniormester
23. januar 2003 - 16:04 #15
Til at starte med er alle dine referencer helt hen i vejret.
Du bør ikke kalde dine frames 'top' og 'bottom' ... det roder JS rundt i. Prøv f.eks. med 'topFR' og 'bottomFR'.
Dernæst skal du referere til elementer i den øverste frame med:
  parent.FRAMENAVN.document.getElementById("ELEMENT_ID");

Der er mere - men start med det
Avatar billede suntrip Nybegynder
23. januar 2003 - 16:15 #16
hooov

har lavet det forkert

det skal være sådan her

http://medlem.jubii.dk/slammerjoe/

med en iframe i stedet.... sorry :(
Avatar billede olebole Juniormester
23. januar 2003 - 16:18 #17
Nu må du zq styre dig ... jeg gider ikke rette din kode en gang til. Du får den, som du lavede den i første hug, så må du klare resten selv:

<frameset rows="50%,50%" border="0" frameborder="0" framespacing="0">
    <frame name=topFR src="top.html" scrolling="no"  noresize="no" marginheight="0" marginwidth="0">
    <frame name=bottomFR src="bottom.html" scrolling="no"  noresize="no" marginheight="0" marginwidth="0">
</frameset>

-----------------------------

<html>
<head>
<SCRIPT type="text/JavaScript">
var count = 0;
var count2 = 0;
var messageCount = 0;
function bttnAdd_onClick(){
    number = count++;
    var elemPara = parent.topFR.document.getElementById("textfelt");
    var newText = ""; //textline
    var newTxtNode = parent.topFR.document.createTextNode(newText);
    var elemNew = parent.topFR.document.createElement("DIV");
    elemNew.appendChild(newTxtNode);
    elemNew.id = "d"+number;   
    alert(elemNew);
    alert(newTxtNode);
    alert(elemPara);
    parent.topFR.document.getElementById("bla").insertBefore(elemNew, elemPara);
    var newText = "<a href='#'>asd"+number+"</a>";
    blop = 'd'+number;
    parent.topFR.document.getElementById(blop).innerHTML = newText;
}
</script>
</head>
<body>
<INPUT TYPE="button" VALUE="Insert" NAME="bttnNew" onclick="bttnAdd_onClick()">
</body>
</html>

---------------------------------

Rettelse i 'top.html':

<td id="bla">
    Indsættes her:
    <div id=textfelt style="overflow: auto"></div>           
</td>

/mvh
Avatar billede suntrip Nybegynder
23. januar 2003 - 16:30 #18
må da meget undskylde at jeg har lavet en fejl.... og jeg ikk lige er super stærk i det her
Avatar billede suntrip Nybegynder
23. januar 2003 - 16:39 #19
men nu har jeg i hvertfald selv rettet til så det passer til det nye... det med iframen...

men kan man ikk få sat det ind i det DIV felt der hedder textfelt? så jeg kan bruge overflow: auto?
Avatar billede suntrip Nybegynder
23. januar 2003 - 16:40 #20
og hvis det er... så er jeg villig til at give flere point...

hvis du kan hjælpe mig med de sidste små ting.. ?
Avatar billede suntrip Nybegynder
23. januar 2003 - 16:57 #21
har fået løst det med scollbaren...

men kan man sørge for at den hele tiden viser den nedester del af siden?... altså i div feltet

hvis du er med... sig til hvis jeg skal smide op
Avatar billede olebole Juniormester
23. januar 2003 - 17:22 #22
Hvorfor skriver du i koden, du vil indsætte før div'et, hvis du ønsker at indsætte _i_ div'et?

<td>
    Indsættes her:
    <div id=textfelt style="overflow: auto"></div>           

</td>

De folk, du beder om at hjælpe dig, bruger deres fritid på det. Det kan ikke være meningen, vi skal spilde vores tid på, at du ikke skriver, hvad du vil og uploader eksempler, du alligevel ikke vil have hjælp til.

Jeg er ude af spørgsmålet og foretrækker at bruge min tid på at hjælpe spørgere, der tager tingene lidt mere alvorligt.
Det har intet at gøre med, om du er 'super stærk i det her'. Det handler om at tage alvorligt, at andre tilbyder at bruge deres fritid på at hjælpe dig.
Så er det mindste, du kan gøre, at lade være med at spilde vores tid med sjusk!
Avatar billede suntrip Nybegynder
23. januar 2003 - 17:46 #23
synes du ikk selv at du hidser dig selv lidt for hurtigt op???

det var jo ikke fordi jeg forventet at du ville lave det om efter at du havde kommet med en løsning....vel?

jeg gjorde bare opmærksom på at jeg havde lavet en fejl and thats it...


så derfor er ingen grund til at hidse sig op over små ting og i øvrigt fik jeg jo selv tilpasset det ikk? så hvad er det lige problemet er?

og ja jeg skrev at det skulle indsættes der.... men man har vel lov til at skifte mening.. right? jeg fik nemlig ikke det ønsket result af ud at det som jeg havde håbet på....MEN DET LØSTE JEG JO OGSÅ SELV..

og hvis jeg ikk tog det her alvorligt.. hvorfor tror du så at jeg oprettet en side, så du kunne se det online.....og hvorfor tror du at jeg selv tilpasset og selv løste nogle af de ting jeg spurgte om?

jeg sagde endda undskyld for mit fejltrin....

problemet her er at enten har du bare haft en dårlig dag... eller også er du ikke særlig tolerant, forstående og tilgivende....


men fordi jeg er så flink som jeg nu er... så får du point alligevel... modsat hvad andre nok ville have gjort
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