1 Sie soll mit der Space taste angehalten und fortgesetzten werden.
2 Die Funktion soll immer 2 Wörter erfassen. Im Moment erfasst sie am Anfang immer zwei und dann einen ganzen string.
3 Diese 2 Wörter sollen während die Funktion läuft mit der Pfeiltaste rauf auf 3,4,5,6,… Wörter erhöht oder mit der Pfeiltaste runter wieder gesenkt werden.
Hallo, nein, da kann ich Dir leider nicht weiterhelfen. Ohne eine Verwendung des jQuery-Cores muss die Tastenabfrage auch ‚von Hand‘ programmiert werden.
Hallo Chris,
wurde ich hier als Java-Script experte vorgeschlagen? (Ich hatte das eigentlich in meinem Profil auf „aus“ stehen).
4.:
Ja Du kannst natürlich so eine Funktion auch komplett ohne Jquery realisieren. Ich sehe, dass die index.js bereits in Teilen auf JQuery verzichtet. Mann kann jquery ansonsten auch von jquery.org herunterladen und eine version auf dem Server ablegen.
Mach ein Minimalbeispiel, das nur diese eine Problem mit so wenig Code rundrum wie möglich enthält. Sorry, es ist eher unwahrscheinlich, dass sich jemand in dein Projekt einarbeitet.
Gerade für Tastatursteuerung und die Manipulation gibt es sehr viele Beispiele. Kann ich dir auch zeigen, wenn es ein konkretes Problem gibt.
jQuery würde ich unbedingt empfehlen, das erspart dir eine Menge Arbeit.
danke für die AW.
Was kann ich in diesem Punkt machen:
2.
Der Replace mit b[2] schlägt dann fehl, da er nur auf das Wort schaut und das gibt es irgendwann doppelt womit das spanende vor dem Anfang landet.
Kann ich den Code verwenden oder muss ich diesen umschreiben?
3.Wie würde eine Grundstruktur für eine Keypress Funktion mit Pfeil nach oben aussehen?
Das Problem liegt daran, dass sich dass Wort wiederholt. Ich weiß aber nicht wie ich diese Funktion ändern kann, dass die jquery Funktion nicht auf selbe Wörter achtet.
Hallo Chris,
da der Code dort einen Fehler enthält (sofern im Text nicht jedes Wort nur genau einmal vorkommt) muß der umgeschrieben werden.
Dazu sollte grob gesagt der replace nur auf den Teil nach dem angesetzt werden. Außerdem sollte man in den Match beide Worte einbringen und nicht nur das erste.
Hallo Chris, hierzu kann ich im Moment auch nichts Konkretes sagen, weil ich mich noch nicht damit befasst habe.
Mit Einfrieren ist sicher Verlassen der Funktion und Wiederaufruf gemeint?
. Leider kann ich nicht sagen, ob eine Variablenübergabe nötig ist.
Die Frage nach der Möglichkeit, ohne die JS- Datei das Ganze auszuführen ist sicherlich gegeben, aber sehr aufwendig.Grundidee: Über den Tastencode der Space-Taste die eigene Funktion aufrufen beziehungsweise verlassen Man muss den ganzen Text als String betrachten und zeichenweise analysieren. Jedes Wort endet mit einem Lehrzeichen und kann dadurch als Teilstring in einer kleinen ZUsatzdatenbank abgespeichert werden. In einer Schleife mit gezählter Wiederholung können dann die gewünschten Wörter selektiert werden. Die Anzahl wird mit einer Tastencode- basierten IF- Anweisungsfolge geändert. In der Hoffnung, wenigstens eine neue Idee gegeben zu haben
Viele grüße Hajo
danke nochmals für deine AW.
Ja ein Replace wie dieser macht Sinn.
Ich hab jetzt mehrere Möglichkeiten versucht.
Jetzt frag ich mich ob das überhaupt Möglich ist, da man ja wieder beim integrieren 2 Wörter überspringen muss.
Ich hab hier im Source code alle css und js Datein zusammengefasst. ( http://www.bestaltmed.at/SpeedreadingII/try/indexx.php )
Vll kannst du es auch nochmal versuchen?
Aber kann man bei replace Wörter überspringen und anschließend noch etwas einfügen?
habe mal etwas zusammenprogrammiert.
Habe die Sachen, die fertig gelesen sind in ein extra Feld gepackt, was aktiv ist und was noch zu lesen ist…
Steuerung und Anzeige ist auch mit drin.
Text Reading
var controller_counttospeak=3;
var controller_showactive=true;
var minwords=1;
var maxwords=5;
var textplay=„Play“;
var textstop=„Stop“;
Spielt ab?:
Wörter pro Einheit:
Das ist der Mustertext mit vielen wrtern … tausende folgen
Das ist der Mustertext mit vielen wrtern … tausende folgen
Das ist der Mustertext mit vielen wrtern … tausende folgen
Das ist der Mustertext mit vielen wrtern … tausende folgen
Show
_______________
und danach noch die kleine index.js -Datei:
_____________________
//http://www.ryancooper.com/resources/keycode.asp
document.onkeydown = checkKeycode
function checkKeycode(e) {
var keycode;
if (window.event) keycode = window.event.keyCode;
else if (e) keycode = e.which;
//alert("keycode: " + keycode);
var savecontroller_counttospeak=controller_counttospeak;
if (keycode==32) //Leertastenevent
{
if (controller_showactive==true)
{controller_showactive=false;}
else
{controller_showactive=true;}
}
if (keycode==38) //Pfeil nach oben
{
controller_counttospeak++;
//Fallback, wenn außer Grenze
var isok=worternowfallback(controller_counttospeak);
if (isok==false)
{
controller_counttospeak–;
}
updateshowfields();
}
if (keycode==40) //Pfeil nach unten
{
controller_counttospeak–;
//Fallback, wenn außer Grenze
var isok=worternowfallback(controller_counttospeak);
if (isok==false)
{
controller_counttospeak++;
}
updateshowfields();
}
updateshowfields();
}
function worternowfallback(value, fallbackvalue)
{
var isok=true;
if (value>maxwords || value1)
{
//alert(newtoread);
setTimeout(color_text, 1000);
}
else
{
controller_showactive=false;
updateshowfields();
}
}
}
Dieses Beispiel verändert einen Text mithilfe des Replace Befehls und eines passenden regulären Ausdruckes.
Der Ausdruck entnimmt einzeln den Text zwischen den Spans, die zwei Worte nach dem Span (bzw. eins oder keins, am Textende) und den restlichen Text. Das landet in $1,$2,$3 und wird im zweiten Parameter von Replace wieder zusammengesetzt.
In der Schleife wird auf die Variable RegExp.$3 geprüft (entspricht $3). Wenn nichts mehr hinter dem Spann steht, dann wird mit einem neuen Replace der Span wieder an den Anfang gesetzt.
Weitere Hintergründe für Reguläre Ausdrücke gibt es bei den Links, die ich oben angegeben hatte und natürlich an vielen anderen Stellen im Netz.
wow. Ich bin echt begeistert.
Vielen Dank.
Dass sieht echt super aus.
Ich hab die ganzen Skriptdaten einmal unter dieser Seite festgehalten: http://www.bestaltmed.at/speedreading.php
Das Anhalten funktioniert auch einwandfrei. Nur das weiterlesen mit Space anschließend funktioniert nicht.
Was kann ich da machen?
Dafür würde ich erstmal eine Funktion bauen, die dafür sorgt, dass man den String in seine Teile teilt. Zum Beispiel (ungetestet):
var pos = 0;
var count = 8;
var words = [];
function mySplit() {
words = [];
var a = $(’#text’).text().trim();
var parts = a.split(/\s/);
var len = parts.length;
for(var i=0;;i+=count) {
if(parts[i+1] == null) break;
var actlen = words.length;
words[actlen] = „“;
for(var j=0;j
Gleiches mit dem keyPress abfangen und zum aufteilen hab ich in dem Beispiel gerade die Variable „count“ benutzt. Die einfach erhöhen und du bekommst größere Teile raus.
Generell kannst du auch komplett ohne jQuery arbeiten, wenn gewünscht. jQuery ist ja auch nur viel JavaScript Code auf einem Haufen, um Dinge zu vereinfachen.
Das ist alles andere als ein Minimalbeispiel. Brich es bitte so weit runter, dass du nur eine einzige Frage hast, und für diese Frage nur der nötige Code enthalten ist.
Sag, was du hast. Ein Element mit Text vielleicht. Und was genau mit diesem Text gemacht werden soll. Die Tastatur oder setInterval gehören nicht in diese Frage.