Hallo, ik ben sinds kort wat aant prutsen met AJAX/JavaScript ( ik kon beide niet ). Nu is het me gelukt om een kleine chat-applicatie te maken. Dit heb ik later in een ( uit tabellen bestaande ) lay-out. Het probleem is alleen dat Firefox de tabel niet 'resized' ofwel aanpast aan de tekst die ik in een cell->span( id=content ) doe, tenzei ik firefox zelf resize of maximaliseer, dan is het ineens weer goed. Nou heb ik al veel gezocht en daaruit bleek dat innerhtml vaak voor problemen zorgt en dat ik het beter met createtectnode ed. kan doen.
Nou vond ik de volgende oplossing op http://developer.mozilla..../DOM:element.replaceChild:
Mijn code is zo:
Pic te ondersteuning:
Nou vond ik de volgende oplossing op http://developer.mozilla..../DOM:element.replaceChild:
JavaScript:
Maar dan heb ik exact hetzelfde effect.1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
| // <div> // <span id="childSpan">foo bar</span> // </div> // create an empty element node // without an ID, any attributes, or any content var sp1 = document.createElement("span"); // give it an id attribute called 'newSpan' sp1.setAttribute("id", "newSpan"); // create some content for the new element. var sp1_content = document.createTextNode("new replacement span element."); // apply that content to the new element sp1.appendChild(sp1_content); // build a reference to the existing node to be replaced var sp2 = document.getElementById("childSpan"); var parentDiv = sp2.parentNode; // replace existing node sp2 with the new span element sp1 parentDiv.replaceChild(sp1, sp2); |
Mijn code is zo:
JavaScript:
En het HTML stukje is zo:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
| function processXml(xml) { var list = ''; var categories = xml.getElementsByTagName('categories').item(0); var category_nodelist = categories.getElementsByTagName('category'); for (var i = 0; i < category_nodelist.length; i++) { var node = category_nodelist.item(i); var title = node.getElementsByTagName('title').item(0).firstChild.data; var subtitle = node.getElementsByTagName('subtitle').item(0).firstChild.data; list = list + title + ': ' + subtitle + '<br>'; } var content = document.getElementById("content"); content.innerHTML = list; } |
HTML:
In IE en Opera werkt het trouwens prima.1
2
3
4
5
6
7
8
9
10
11
| <table width="610" border="0" cellpadding="0" cellspacing="0"> <tr>...</tr> <tr>...</tr> <tr> <td valign="top" style="..."><div style="..."> <span id="content"></span> <br><br><...2 invoerveldjes + knopje...> </div></td> </tr> <tr>...</tr> </table> |
Pic te ondersteuning:
[ Voor 0% gewijzigd door Possstema op 01-08-2006 01:51 . Reden: Beetje opschone... ]