Home | Registrieren | Einloggen | Suchen | Aktuelles


Forum » Auszeichnungssprachen » vollständigen text auf wunsch anzeigen Antworten
vollständigen text auf wunsch anzeigen

thomas achilles
Pixelschubser


Beiträge: 7


hallo erstmal,

also folgendes beschäftigt mich zur Zeit:

ich habe ein x bilder und dazu gehörigen text.
beides binde ich in eine tabelle ein.
in der 'standart ansicht' möchte ich x bilder und nur die ersten vier zeilen des textes anzeigen.
am fusse der vierten zeile möchte ich einen schalter einbinden, der den restlichen text in das tabellen feld einfliessen läßt.
Unten am text dann wieder einen schalter, der den text wieder verkleinert.

irgendwelche tipps?

würde mich sehr freuen.

thomas

  Profil   E-Mail   Editieren   Zitieren

Ori
Fachidiot


Beiträge: 116


Du müsstest die Zeilen nach der vierten in einen <div> wickeln, und den dann ein- bzw. Ausblenden lassen, etwa so:
1:
<div class="wrap">...</div>


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:
<script type="text/javascript">
// <![CDATA[
function einblenden (obj)
{
   obj.onclick = function (e) { ausblenden(this); };
   obj.firstChild.data = 'Ausblenden';
   obj.previousSibling.style.display = 'block';
}
function ausblenden (obj)
{
   obj.onclick = function (e) { einblenden(this); };
   obj.firstChild.data = 'Einblenden';
   obj.previousSibling.style.display = 'none';
}
window.onload = function (e) {
   var divs = document.getElementsByTagName('div');
   for ( var i = 0; i < divs.length; i++ ) {
      var div = divs[i];
      if ( div.className == 'wrap' ) {
         var btn = document.createElement('button');
         btn.appendChild( document.createTextNode('...') );
         div.parentNode.insertBefore( btn, div.nextSibling );
         ausblenden(btn);
      }
   }
};
// ]]>
</script>


Ein paar Bemerkungen: Wenn die Wickel<div>s mehr als einen Klassennamen habe, wird das nicht klappen, dann müsste die if-Abfrage angepasst werden. Bei mehreren onload-Ereignissen am besten eine JavaScript-Bibliothek benutzen, die sich um sowas kümmert (etwa Prototype). Der Code erzeugt für jeden Textabsatz eine eigenen Button.

Falls der Text nicht nach festen Zeilenumbrüchen enden soll, sondern (je nach Fensterbreite) auch mitten im Satz, solltest Du <span>s anstelle von <div>s verwenden (etwa nach xyz Wörtern). Das automatische Abbrechen des Textes nach vier Zeilen ist ohne Weiteres nicht möglich. (Es wäre ein Riesenfummelkram, und das Layout der Seite müsste bekannt sein, um den Rest abzuschneiden.)

PS: Der Code ist ungetestet, sollte aber gehen.
PPS: Code ist jetzt getestet und sollte gehen.

Diese Nachricht wurde geändert von: Ori
  Profil   E-Mail   Website   Editieren   Zitieren

thomas achilles
Pixelschubser


Beiträge: 7


ehm, ist mir zwar irgendwie peinlich, aber ich verstehe deine hilfe nicht, bzw. ich verstehe von java script zuwenig um dir folgen zu können. Wahrscheinlich schlagen jetzt alle die ohren übereinander.

also ich habe das pPrototype.js an/in die datei eingebunden. mein editor zeigt mir auch brav einen div umrandung, leider ist das auch alles. stelle ich datei hoch, passiert nichts, ich sehe den im div vorhanden text immernoch.

ahh, dabei sollte es doch nur schön aussehen.

thomas

  Profil   E-Mail   Editieren   Zitieren

Ori
Fachidiot


Beiträge: 116


Jetzt klappt auch das Skript...

Dazu ist Prototype aber nicht nötig — wenn Du aber mehr solcher Funktionen hast, die auch beim Anzeigen der Seite ausgeführt werden sollen, würden die sich vermutlich gegenseitig behindern. Prototype könnte dieses Problem dann jedoch lösen.

Der Skriptblock enthält drei Funktionen:
• eine zum Einblenden eines Blockes,
• eine zum Ausblenden und
• eine, die die Webseite nach den <div class="wrap"> durchsucht, danach einen <button> ins Dokument hängt und dann so tut, als wäre dieser Button zum Ausblenden gedrückt worden.

Bemerkenswert ist, dass die Funktionen zum Ein- bzw. Ausblenden nicht etwa den Block, sondern den Button direkt nach dem Block als Parameter annehmen.

Der Text auf den Buttons lässt sich in den Zeilen 6 und 12 anpassen. Falls sich diese Buttons irgendwie von anderen unterscheiden sollen, muss (am besten zwischen den Zeilen 20 und 21) eine CSS-Klasse für den <button> gesetzt werden, etwa mit
1:
         btn.className = 'blender';

  Profil   E-Mail   Website   Editieren   Zitieren

thomas achilles
Pixelschubser


Beiträge: 7


Ha es geht, vielen dank. Ich denke, ich sollte lernen das selbst zu tun.
thomas

  Profil   E-Mail   Editieren   Zitieren

smark123
Pixelschubser


Beiträge: 18


ich würde eine schlankere version bevorzugen, weg von java script, mehr mit css machen.

wird bei größeren vorhaben, imens deine ganzen kompetenzen schonen.

---
Meine Signatur ist noch im Aufbau

  Profil   Editieren   Zitieren

thomas achilles
Pixelschubser


Beiträge: 7


Also - ich weiß ja nichts, aber - ist css nicht zur auszeichnung von text da? größer, kleiner, farbe und ... . auch benötigte ich diese funktionalität nur auf einer seite. und dafür ist es wunderbar. http://www.theater-im-palais.de/just/darsteller.php > das reicht doch.

wie hätte das in css aussehen müssen?

gruss thomas

  Profil   E-Mail   Editieren   Zitieren

Ori
Fachidiot


Beiträge: 116


smark123 schrieb am 23.01.2008 08:48
ich würde eine schlankere version bevorzugen, weg von java script, mehr mit css machen.

wird bei größeren vorhaben, imens deine ganzen kompetenzen schonen.


Ich lese zwischen den Zeilen, dass Du das Skript in eine externe Datei verlagern willst (macht insbesondere Sinn, wenn das Skript auch außerhalb dieser einen Seite gebraucht würde), denn...

thomas achilles schrieb am 23.01.2008 12:02
wie hätte das in css aussehen müssen?


...dieser Effekt lässt sich mit CSS allein nicht umsetzen. Das Skript sollte natürlich auch in einer externe Datei verlagert werden (was ich zwischen den Zeilen herauslese)...

An dieser Stelle empfehle ich den geneigten Lesern, sich die Artikel Behavioral Separation und Unobtrusive Javascript durchzulesen, um zu verstehen, wie und wozu XHTML, CSS und JavaScript wirklich gut sind.

Ich halte mich mit dem Skript nicht 100%-ig an die dort vertretenen Paradigmen, aber genug, wenn es das einzige Skript auf der Seite ist (wie bereits erwähnt). Bei deaktivierten Skripts wird einfach jeder Text angezeigt, der Inhalt bleibt also auch dann sichtbar.

  Profil   E-Mail   Website   Editieren   Zitieren
 

Antworten
Nach oben