• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

[FRAGE] Sätze trennen

dbarthel

Lounge-Member
Habe nochlam eine Frage.

Da der Text, den Minis Funktion aus diesem Thread: http://forum.jswelt.de/javascript/60110-pdf-vorlesen-lassen.html#post387368 liefert, zu lang für die weitere Verarbeitung ist, habe ich den Code wie folgt geändert, um den Text weiter aufzusplitten:

Code:
// play
  $("#demo_play").click(function () {
  var currentSentence = '', sentenceParts = '', currentPart = '',
  sentences = $("#output").text().replace(/([.?!]+ )/g, "$1\n").split(/\s*[\n\r]+\s*/); // splits the txt into sentences


  function playSentence () {
   if (sentences.length) {
     currentSentence = sentences.shift().trim(); // gets the currentSentence for each time the playSentence-function is called
	 	 
	 if (currentSentence.length) {
	   // playing currentSentence would start here normally, but we need to check if currentSentence is too big
	   alert(currentSentence);
	   
	     if (currentSentence.length >= 100) {
	     //new splitting necesarry
		 
	     sentenceParts = currentSentence.split(/\,/mg); //splits the currentSentence into parts
	   
	     function playSplitSentence ()  {
	     if (sentenceParts.length) {
		   currentPart = sentences.shift().trim(); // gets the currentPart for each time the playSplitSentence-function is called
		   if (currentPart.length) {
		     // playing currentPart will start here
			 alert(currentPart);
			 window.setTimeout(playSplitSentence, 1000);
			
		   // currentPart have been played so recall the function to play next Part
		   } else {
		        playSplitSentence();
		   }
		 // all Parts have been  played		
		 } 
		 else {
		    console.log('finished playing parts of currentSentece, should continue next sentence');
			//playSentence(); 
			// get next Sentence
		 }
		 
	     }
		 // call the playSplitSentence-function to start playing all parts of currentSentence
         playSplitSentence();
	   
	     // ended new splitting continuing normal playing
	     } else {
	           //play currentSentence
	           alert(currentSentence);
			   window.setTimeout(playSentence, 3000);
			    }
			  
			  
	 // currentSentence have been played so recall the function to play next Sentece		  
     } else {
           playSentence();
            }
   // all Sentences have been  played			
   } else {
         console.log('Finished playing text');
          }
  }
  // call the playSentence-function to start playing all sentences of txt
  playSentence();
  });

allerdings scheint da ein Fehler drin zu sein, denn als Ergebnis wird jetzt der erste Durchlauf von currentSentence nicht ausgegeben, sondern erst mit dem zweiten begonnen.

Könnte sich bitte jemand mal den Code ansehen und mir sagen wo das Problem liegt, bzw. den Code zum funktionieren bringen!?
 
Zuletzt bearbeitet:
Zurück
Oben