Home | Registrieren | Einloggen | Suchen | Aktuelles


Forum » Auszeichnungssprachen » JS + IE = Prob Antworten
JS + IE = Prob

goalkeeper
Otto-Normal-Poster


Beiträge: 69


Hi Leute,

hat einer von euch ne Idee wieso das hier:

1: 
2: 
3: 
4: 
5: 
6: 
7: 
8: 
9: 
10: 
11: 
12: 
13: 
14: 
15: 
16: 
17: 
18: 
19: 
20: 
21: 
22: 
23: 
24: 
25: 
26:
<script type="text/javascript">
<!--
function renderTable(){
var xrawdata = document.getElementById('table1').innerHTML;   
var parse1 = xrawdata.replace(/<table.+>/,"");
var parse2 = parse1.replace(/<\/table>/, "");
var parse3 = parse2.replace(/<\/td>/,"");
var parse4 = parse3.replace(/<\/tr>/,"");
var zeilen = parse4.split('<tr>');

for(i=1;i<zeilen.length;i++)
{
zeilen[i]=zeilen[i].split('<td>')
}

for(i=1;i<zeilen.length;i++)
{
 document.write('<br>Zeile: '+i)
 for(j=0;j<zeilen[i].length;j++)
 {
 	document.write(zeilen[i][j]+'|');
	}
 }
}
// -->
</script>


im IE nicht geht und im FF läuft?


Gruss

Goalkeeper

  Profil   Editieren   Zitieren

Ori
Fachidiot


Beiträge: 116


1: 
2: 
3: 
4: 
5: 
6: 
7: 
8: 
9: 
10: 
11: 
12: 
13: 
14: 
15: 
16: 
17: 
18: 
19: 
20: 
21: 
22: 
23: 
24: 
25: 
26: 
27: 
28: 
29: 
30: 
31: 
32: 
33: 
34: 
35: 
36: 
37: 
38: 
39: 
40: 
41: 
42: 
43: 
44: 
45: 
46: 
47: 
48: 
49: 
50: 
51: 
52: 
53: 
54: 
55: 
56: 
57:
function renderTable()
{
	var t1 = document.getElementById('table1');
	var tbodX, trX, tdX;

	for (var tbodi = 0; tbodi < t1.childNodes.length; tbodi++)
	{
		tbodX = t1.childNodes[tbodi];
		if (tbodX.nodeType == 1 && tbodX.tagName.charAt(0).toLowerCase() == 't') // tbody, thead und tfoot rausnehmen
		{
			for (var tri = 0; tri < tbodX.childNodes.length; tri++)
			{
				trX = tbodX.childNodes[tri];
				if (trX.nodeType == 1 && trX.tagName.toLowerCase() == 'tr')
				{
					document.write('<br>Zeile: ');
					for (var tdi = 0; tdi < trX.childNodes.length; tdi++)
					{
						tdX = trX.childNodes[tdi];
						if (tdX.nodeType == 1 && (tdX.tagName.toLowerCase() == 'td' || tdX.tagName.toLowerCase() == 'th'))
							document.write(tdX.innerHTML + '|');
					}
				}
			}
		}
	}
}

function renderTable2()
{
	var t1 = document.getElementById('table1');

	var tbody = t1.firstChild;
	while (tbody != null)
	{
		tr = tbody.firstChild;

		while (tr != null)
		{
			if (tr.nodeType == 1 && tr.tagName.toLowerCase() == 'tr')
				document.write('<br>Zeile: ');

			td = tr.firstChild;

			while (td != null)
			{
				if (td.nodeType == 1 && (td.tagName.toLowerCase() == 'td' || td.tagName.toLowerCase() == 'th'))
					document.write(td.innerHTML + '|');

				td = td.nextSibling;
			}

			tr = tr.nextSibling;
		}
		tbody = tbody.nextSibling;
	}
}


Zum Verständnis hilft die SelfHTML-Objektreferenz: node.

Eigentlich nicht der Königsweg, es via DOM auszulesen und hinterher brutal reinzuschreiben, aber... es funktioniert.
Bei der zweiten Variante habe ich while- anstelle der for-Schleifen genommen und die if-Abfragen etwas anders gesetzt, das Ergebnis ist aber das gleiche.

PS: <th>s werden von Deiner Variante nicht korrekt geparst.. Bei mir habe ich sie einfach mal hinzugefügt.

PPS: In Deiner Variante könntest Du die beiden for-Schleifen zusammenfassen.

  Profil   E-Mail   Website   Editieren   Zitieren

goalkeeper
Otto-Normal-Poster


Beiträge: 69


Das funktioniert schon mal nich schlecht... auch der Ansatz is ziemlich interessant....

jetzt muss ich nur noch schauen das ich colspans und rowspans abgefangen bekomme

Gruss

Goalkeeper

  Profil   Editieren   Zitieren

goalkeeper
Otto-Normal-Poster


Beiträge: 69


hi zusammen, hat einer von euch eine idee wie ich am besten die tabelle mit den colspans und rowspans geparst bekommen?

  Profil   Editieren   Zitieren

Ori
Fachidiot


Beiträge: 116


Wie sollten die denn abgefangen werden?
(Eine externe Beispieldatei hilft wohl am meisten zur Erklärung - Tabelle vorher und Text nachher)

  Profil   E-Mail   Website   Editieren   Zitieren

goalkeeper
Otto-Normal-Poster


Beiträge: 69


deine Idee war grandios Ori... node war das zauberwort. rowspan und colspan sind ganz normale attribute.... ich muss nur zweimal durch die tabelle dann klappts... erst die spans auflösen und dann ins array schreiben...

dank dir nochmal für deine Hilfe

  Profil   Editieren   Zitieren
 

Antworten
Nach oben