Eingeklappte Bausteine durchsuchbar, klappen aber nicht von alleine bei Treffer auf

tombe

Erfahrenes Mitglied
Ok, dann schau mal in den Quelltext der Seite und zwar an der Stelle wo du versuchst die Datei einzubinden. Eventuell steht dort eine Fehlermeldung, könnte mir vorstellen das der Dateinahme bzw. das "Ü" und "Ä" Probleme machen könnte.
 

Nusspli

Mitglied
Den Quelltext kann ich leider erst wieder morgen begutachten... ^^

Allerdings habe ich mir das mit den Umlauten schon gedacht und sowohl die als auch Leerzeichen entfernt. Nichts davon hat geholfen...auch nicht eine html-Datei bestehend aus nur einem Buchstaben.
 

tombe

Erfahrenes Mitglied
Nur zur Sicherheit: die Datei in welcher du mit include die anderen Seiten einbindest, die hat die Endung PHP und du hast bei dir PHP/Xampp installiert und es läuft auch?

Wenn du Xampp laufen hast, dann muss die Datei/die Dateien im htdocs Verzeichnis liegen oder einem untergeordneten Verzeichnis.

Der Aufruf der Seiten darf nicht durch Doppelklick im Windows Explorer o.ä. gemacht werden. Du musst in die Adresszeile des Browsers localhost/dateiname.php oder localhost/deinverzeichnis/dateiname.php eingeben.
 

Nusspli

Mitglied
Guten Morgen...

Ja, die Datei hat die Endung .php und wird über Expression Weg aufgerufen. Per Doppelklick auf die Datei öffnet sich das Programm ohnehin automatisch.

Im Quelltext der Seite steht dann an der entsprechenden Stelle einfach nur der Befehl, wie er im Code auch steht... 1:1. Kein Fehlerhinweis.

Bis jetzt liegen die Dateien genau im gleichen Ordner wie die .php Datei. Wenn ich das richtig verstanden hab, ist das so richtig.

PHP/Xampp sagt mir so nichts bzw. kann nicht bestätigen, ob das drauf ist oder nicht. Auf jeden Fall funktionieren Seiten mit php (sie das Forum hier) einwandfrei.

Viele Grüße
 

tombe

Erfahrenes Mitglied
...und wird über Expression Weg aufgerufen. Per Doppelklick auf die Datei öffnet sich das Programm ohnehin automatisch.
Expression bedeutet was und welches Programm öffnet sich?

Auf jeden Fall funktionieren Seiten mit php (sie das Forum hier) einwandfrei.
Wenn die Seiten des Forums bei dir funktionieren bedeuted das nicht das du PHP hast. Diese Seiten hier werden ja auf dem Tutorials-Server ausgeführt!

Ich habe die große Befürchtung das du bei dir gar kein PHP installiert hast!
Zu meiner Schande muss ich gestehen das ich nicht gefragt habe und auch nicht gesagt das du es eventuell installieren müsstest, bin einfach davon ausgegangen das dir das klar wäre.

Es gäbe aber noch eine andere Möglichkeit wie du verschiedene einzelne Seiten erstellst und diese dann zu einer großen Seite "zusammenbaust".

HTML:
<iframe src="name_der_datei.html" width="100%" height="100%" frameborder="0" scrolling="no"></iframe>

Was es bei dieser Lösung zu beachten gillt, findest du hier dann beschrieben.
 

Nusspli

Mitglied
Guten Morgen...

Ok, das ist gut möglich. Auf dem normalen Rechner, auf dem ich die Seite erstelle, ist das Ganze sicherlich nicht installiert. Dafür ist er eigentlich auch nicht gedacht.... müsste mal schauen bzw. in Erfahrung bringen, ob die Server, auf denen die Seite dann final steht, mit php arbeiten bzw. obs da funktioniert.

Bis dahin versuche ich deinen zweiten Vorschlag....danke schön.
 

tombe

Erfahrenes Mitglied
Guten Morgen.

Selbst wenn PHP auf dem Server vorhanden ist und die iframe-Lösung jetzt so klappt, dann würde ich es auch so lassen.
Denn wenn du bei dir - wo die Seiten entwickelt werden - kein PHP hast, dann siehst du ja nie direkt wie das Ergebnis aussieht.

Was wurde denn jetzt eigentlich aus der "Mitte der Seite". Hat das bei dir dann noch geklappt?
 

Nusspli

Mitglied
Stimmt auch wieder...
An der Umsetzung arbeite ich noch und nein, das mit dem scrollen habe ich noch nicht hinbekommen. Habe die Versionen soweit abgeglichen und Änderungen vorgenommen...allerdings stimmt mir der Gesamtcode nicht überein.... ich les mich jetzt mal nochmal durch die Änderungen hier im Thread.

Der Quatsch mit der roten Markierung allerdings klappt mittlerweile wie es soll.

e:/ Hatte mich im vorletzten Post vertippt. Ich meine natürlich Expression Web.. .also das neue Frontpage. Damit arbeite ich.
 

Nusspli

Mitglied
So sieht das Script im Moment bei mir, mit allen Änderungen, aus:

Code:
<script language="javascript" type="text/javascript">
var orig = "";
var start = 0;
var div_count = 0;
 
function toggle(control) {
 
if(document.getElementById(control).style.display == "none") {
    document.getElementById(control).style.display = "block";
} else {
    document.getElementById(control).style.display = "none";
}
 
}
 
function highlight () {
suche = document.getElementById("txtSuche").value.toLowerCase();
 
if (orig == "") {
    orig = document.getElementById("inhalt").innerHTML;
} else {
    document.getElementById("inhalt").innerHTML = orig;
}
 
if (div_count >= document.getElementsByTagName('div').length) {
    div_count = 0;
    start = 0;
    alert("Das Ende der Seite wurde erreicht oder \n            der Suchbegriff wurde nicht gefunden!");
    return;
}
 
if (document.getElementsByTagName('div')[div_count].className == "xxx") {
    text = document.getElementsByTagName('div')[div_count].innerHTML.toLowerCase();
    orig_text = document.getElementsByTagName('div')[div_count].innerHTML;
    start = text.indexOf(suche, start);
    if (start == -1) {
        div_count = div_count + 1;
        start = 0;
        highlight();
        return;
    }
 
    ende = start + suche.length;
    neu = orig_text.substring(0, start) + "<span style='color:red; font-weight: bolder;'><a name='treffer' id='treffer'>" + orig_text.substring(start, ende) + "</a></span>" + orig_text.substring(ende);
    document.getElementsByTagName('div')[div_count].innerHTML = neu;
 	von = document.getElementsByTagName("div")[div_count].innerHTML.substr(0, start).toLowerCase().lastIndexOf("<div");
 
    if(von != -1) {
        sub = document.getElementsByTagName("div")[div_count].innerHTML.substring(von, start);
        reg = new RegExp(/[a-z]{1,}[0-9]{1,}-[0-9]{1,}/);
        id = reg.exec(sub);
        document.getElementById(id).style.display  = "block";
    }
    start = ende;
    document.getElementsByTagName('div')[div_count].style.display = "block";
    location.href = "#treffer";
    	pos = document.getElementById("treffer").offsetTop - (window.innerHeight / 2);
		window.scrollTo(0, pos);
    
   } else {
    div_count = div_count + 1;
    start = 0;
    highlight();
}
 
if (div_count >= document.getElementsByTagName('div').length || start == -1) {
    div_count = 0;
    start = 0;
}
 
}
 
function reset (){
    start = 0;
    div_count = 0;
 
}
</script>

Hier funktioniert soweit alles (aufklappten der Unterpunkte, Farbe usw.)... allerdings scrollt er nicht sondern bleibt, auch wenn der nächste Treffer ausserhalb der Anzeige liegt, immer ganz oben (also dieser Scrollbalken da).

Er will nicht, wie bei deiner Version.
 

tombe

Erfahrenes Mitglied
So ich denke mal das ich auch dieser Fehler gefunden habe, zumindest dann wenn du mit dem Internet Explorer unterwegs bist.

Ändere mal bitte diese Zeile
Javascript:
pos = document.getElementById("treffer").offsetTop - (window.innerHeight / 2);

so ab:
Javascript:
pos = document.getElementById("treffer").offsetTop - (document.documentElement.clientHeight / 2);

So wie es aussieht kennt der IE window.innerHeight nicht deshalb flakert es kurz weil versucht wird diese Anweisung auszuführen, doch da es einen Fehler gibt bleibt es beim Flackern!