Wiedermal der beliebt IE

DeluXe

Funkjoker
Abend zusammen. :)

Ich habe gerade ein etwas "doofes" Problem.
Und zwar bastel ich gerade eine kleine Seite für ein Projekt, die bis jetzt auch ganz gut funktioniert, nur im IE nicht.(Wie ich gehört habe...)
Da ich einerseits Linux laufen habe und auf der anderen Seite auch keine Win-Cd hier habe, kann ich das demnach nicht wirklich nachvollziehen.
Aus diesem Grund heraus würde ich mal jemanden mit etwas Zeit bitten, sich den Krams mal anzuschauen und vielleicht einen dieser "most-wanted's" zu entdecken. ;)

Es kann imho nur an einer der beiden Funktionen liegen.
Die Erste wird im body mit onload aufgerufen und soll alle möglichen Links auf der Seite auf die class überprüfen und ggf. das onclick-Event hinzufügen und die class des Links ändern.

Die zweite Funktion wird von denjenigen Links aufgerufen, die von der ersten das onclick-Event zugeteilt bekommen haben.
Diese wiederrum soll lediglich den gerade geklickten Link als aktive markieren und den passenden content anzeigen.

*edit*
Was ich mir als Fehlerursache sehr gut vorstellen könnte, wäre eine vom IE schon deklarierte Variable, die ich versuche als eine eigene zunutzen o. ä., Beispiel dafür wäre die Variable "element", wobei ich meine die schon öfter im IE genutzt zu haben.

Der Link sieht dann z.b. so aus:
Code:
<a href="#" id="1" class="content">moep</a>

Der container mit dem content so:
Code:
<div id="content_1">blubb</div>

Bei Unklarheiten einfach schreiben. :)
ps.: Im "richtigen" Code sind die beiden Funktionen andersrum angeordnet, was aber egal sein sollte, oder?

Code:
function links_replace( ) {
    var links = document.getElementsByTagName('a');
	for( var i = 0; i < links.length; i++ ) {
        var link = links[i];
		if( link.className.substr( 0, 10 ) == 'content' ) {
        	if ( link.id == 1 ) link.setAttribute( 'class', 'content_active' );
        	link.setAttribute( 'onclick', 'goto(this); return false;' );
    	}
	}
}

function goto( element ) {
    var links = document.getElementsByTagName('a');
	for( var i = 0; i < links.length; i++ ) {
        var link = links[i];
       	if ( link.className.substr( 0, 7 ) == 'content' ) {
	       	link.setAttribute( 'class', 'content' );
	       	document.getElementById( link.className+'_'+link.id ).className = 'hidden';
       	}
    }

	document.getElementById( element.className+'_'+element.id ).className = 'unhidden';
	element.setAttribute( 'class', element.className+' '+element.className+'_active' );
}

Schonmal vielen vielen Dank im Vorraus. :)
 
Zuletzt bearbeitet:
Der IE hat seine Eigenheiten beim Arbeiten mit setAttribute()

So lautet dort bspw. das Attribut für den Klassennamen "className" und nicht "class".
Das Zuweisen für JS-Events funktioniert dort überhaupt nicht.

Am Besten verzichtest du komplett auf die Verwendung von setAttribute(), und weist die Eigenschaften überall auf die Art zu, wie du es bspw. hier tust:

Code:
document.getElementById( link.className+'_'+link.id ).className = 'hidden';
 
Na das ist auf jeden Fall mal sehr gut zu wissen, vielen Dank für die Aufklärung. :)

Trotzdem will es nicht wirklich funktionieren. (Hier auf Arbeit hab ich wenigstens den IE und kann selber testen. ;))

Die beiden folgenden Zeilen machen ja "im Prinzip" das selbe.
Abgesehen davon, dass die zweite Zeile wie schon gesagt nur im FF geht, geht die erste in gar keinem Browser. :confused:
Code:
link.onclick = "goto(this); return false;";
link.setAttribute( 'onclick', 'goto(this); return false;' );

Was gefällt ihm denn daran nun schon wieder nicht?
ps.: Ich habe die beiden Zeilen natürlich nicht gleichzeitig im Code gehabt.

Nochmals Danke. :)
 
die id's deiner links sind nur zahlen. Laut definition müssen sie mit einem Buchstaben oder einem _ beginnen, soweit ichweiß. Nenn sie also in link1, link2 und meinetwegen content_link1 content_link2 um
 
Versuch das ganze mal anstatt:
Code:
link.onclick = "goto(this); return false;";

so:
Code:
link.onclick = function() { goto(this); return false };
 
die id's deiner links sind nur zahlen. Laut definition müssen sie mit einem Buchstaben oder einem _ beginnen, soweit ichweiß. Nenn sie also in link1, link2 und meinetwegen content_link1 content_link2 um

Daran kann's nicht liegen, weil, wenn ich das goto() direkt in das onclick-Event rein schreibe, funktioniert ja auch alles. von daher denk ich mal, dass es das nicht sein kann.
Aber ich probiers trotzdem mal aus.

@TwoFaze,
auch eine nette Variante, hab ich gleich noch etwas zum testen :)
 
Zurück