2017-05-11 2 views
0

Wir erstellen zufälligen Text aus einem Array von Wörtern. Die Idee ist es, zu mischen und die Wörter zu mischen, um neue "zufällige Sätze" zu erzeugen. Wir haben es fast, der Punkt ist, dass es "undefined" am Anfang jedes Absatzes hinzufügt und am Ende zufällige Wörter hinzufügt. Könnte uns bitte jemand helfen?RANDOM TEXT GENERATOR FEHLER MIT JAVASCRIPT

Wir machen, dass der Satz mit einem Großbuchstaben beginnt und dass es mit einem Punkt endet.

PD: Durch das Hinzufügen des Snippets wird kein zufälliger Text erzeugt, aber in der .js-Datei wird es erzeugt.

var buttonElem = document.getElementById("DoAgain"); 
 
buttonElem.addEventListener('click', makeNewString); 
 

 

 
var str = "Lorem ipsum dolor sit amet consectetur adipiscing elit Nullam malesuada ac nulla id interdum Nam volutpat nulla id neque scelerisque ut imperdiet tellus mattis Aliquam a consectetur felis Praesent at eros lorem Nunc id pretium lacus sed porta ex Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas Maecenas mollis posuere auctor Aenean ultrices eleifend diam mattis varius tellus convallis sagittis Donec ut lacus vel nulla laoreet mollis Quisque faucibus nunc at nisi ullamcorper facilisis"; 
 

 
var mixedRes=[]; 
 

 
var currentPosition=0; 
 

 
var newString = ""; 
 

 

 
function addTag(){ 
 
\t newString = "<p>" + str + "</p>"; 
 
} 
 

 

 
function makeNewString() { 
 
    
 
    str=str.toLocaleLowerCase(); 
 
    var res = str.split(" "); 
 
    mixedRes = shuffle(res); 
 
    
 
    
 
    for(var i=0; i< mixedRes.length; i++) 
 
    { 
 
     newString += mixedRes[i] + " "; 
 
    } 
 
    
 
    newString+=makeSentence(6); 
 

 
     document.getElementById("demo0").innerHTML = newString;  
 
} 
 

 
function shuffle(array) { 
 
    var currentIndex = array.length, temporaryValue, randomIndex; 
 

 
    while (0 !== currentIndex) { 
 

 
    randomIndex = Math.floor(Math.random() * currentIndex); 
 
    currentIndex -= 1; 
 

 
    temporaryValue = array[currentIndex]; 
 
    array[currentIndex] = array[randomIndex]; 
 
    array[randomIndex] = temporaryValue; 
 
    } 
 

 
    return array; 
 
} 
 

 
function capitalise(word){ 
 
\t return (word.charAt(0).toUpperCase()+word.slice(1)); 
 
} 
 

 
function makeSentence(slenght){ 
 
\t var slength=randomNumber(5,10); 
 
    
 
    var upperCaseLetter = ""; 
 
    upperCaseLetter=mixedRes[currentPosition].charAt(0).toUpperCase(); 
 

 
\t for (var i=currentPosition+1; i<currentPosition+slength;i++){ 
 
\t \t newString+=mixedRes[i]+""; 
 
\t } 
 
\t 
 
\t currentPosition+=slength; 
 
    
 
    var finalString=upperCaseLetter+newString+"."; 
 

 
    document.getElementById("demo1").innerHTML = finalString; 
 
} 
 

 
function makeParagraph(){ 
 
\t newString+="/n"; 
 
} 
 

 
function randomNumber(a,b) { 
 
    return Math.round(Math.random()*(b-a)+parseInt(a)); 
 
}
<p id="demo0">Lorem ipsum dolor sit amet consectetur adipiscing elit Nullam malesuada ac nulla id interdum Nam volutpat nulla id neque scelerisque ut imperdiet tellus mattis Aliquam a consectetur felis Praesent at eros lorem Nunc id pretium lacus sed porta ex Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas Maecenas mollis posuere auctor Aenean ultrices eleifend diam mattis varius tellus convallis sagittis Donec ut lacus vel nulla laoreet mollis Quisque faucibus nunc at nisi ullamcorper facilisis.</p> 
 

 
<button class="button1" id="DoAgain"> DO IT AGAIN</button>

+0

ich nicht Demo1 Element sehen, aber Sie verwenden: document.getElementById ("demo1") –

+0

Sie haben 'Neuerstring + = makeSentence (6);' 'aber makeSentence()' nicht alles zurückgeben. – Barmar

Antwort

0

in Ihrem Code ändern Diese

document.getElementById("demo1").innerHTML = finalString; 

in

document.getElementById("demo0").innerHTML = finalString; 
+0

Das behebt den Fehler im Snippet, behebt jedoch nicht das Problem mit "undefined" im zufälligen Text. – Barmar

0

Sie haben newString+=makeSentence(6); in Ihrem Code, aber makeSentence() keinen return Aussage, So kommt es zurück undefined. Ich denke, es soll finalString zurückgeben, anstatt es .innerHTML eines Elements zuzuweisen, das nicht existiert.

var buttonElem = document.getElementById("DoAgain"); 
 
buttonElem.addEventListener('click', makeNewString); 
 

 

 
var str = "Lorem ipsum dolor sit amet consectetur adipiscing elit Nullam malesuada ac nulla id interdum Nam volutpat nulla id neque scelerisque ut imperdiet tellus mattis Aliquam a consectetur felis Praesent at eros lorem Nunc id pretium lacus sed porta ex Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas Maecenas mollis posuere auctor Aenean ultrices eleifend diam mattis varius tellus convallis sagittis Donec ut lacus vel nulla laoreet mollis Quisque faucibus nunc at nisi ullamcorper facilisis"; 
 

 
var mixedRes = []; 
 

 
var currentPosition = 0; 
 

 
var newString = ""; 
 

 
function addTag() { 
 
    newString = "<p>" + str + "</p>"; 
 
} 
 

 
function makeNewString() { 
 

 
    str = str.toLocaleLowerCase(); 
 
    var res = str.split(" "); 
 
    mixedRes = shuffle(res); 
 
    newString += mixedRes.join(" ") + " "; 
 

 
    newString += makeSentence(6); 
 

 
    document.getElementById("demo0").innerHTML = newString; 
 
} 
 

 
function shuffle(array) { 
 
    var currentIndex = array.length, 
 
    temporaryValue, randomIndex; 
 

 
    while (0 !== currentIndex) { 
 

 
    randomIndex = Math.floor(Math.random() * currentIndex); 
 
    currentIndex -= 1; 
 

 
    temporaryValue = array[currentIndex]; 
 
    array[currentIndex] = array[randomIndex]; 
 
    array[randomIndex] = temporaryValue; 
 
    } 
 

 
    return array; 
 
} 
 

 
function capitalise(word) { 
 
    return (word.charAt(0).toUpperCase() + word.slice(1)); 
 
} 
 

 
function makeSentence(slenght) { 
 
    var slength = randomNumber(5, 10); 
 

 
    var upperCaseLetter = ""; 
 
    upperCaseLetter = mixedRes[currentPosition].charAt(0).toUpperCase(); 
 

 
    for (var i = currentPosition + 1; i < currentPosition + slength; i++) { 
 
    newString += mixedRes[i] + ""; 
 
    } 
 

 
    currentPosition += slength; 
 

 
    var finalString = upperCaseLetter + newString + "."; 
 

 
    return finalString; 
 
} 
 

 
function makeParagraph() { 
 
    newString += "/n"; 
 
} 
 

 
function randomNumber(a, b) { 
 
    return Math.round(Math.random() * (b - a) + parseInt(a)); 
 
}
<p id="demo0">Lorem ipsum dolor sit amet consectetur adipiscing elit Nullam malesuada ac nulla id interdum Nam volutpat nulla id neque scelerisque ut imperdiet tellus mattis Aliquam a consectetur felis Praesent at eros lorem Nunc id pretium lacus sed porta ex Pellentesque 
 
    habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas Maecenas mollis posuere auctor Aenean ultrices eleifend diam mattis varius tellus convallis sagittis Donec ut lacus vel nulla laoreet mollis Quisque faucibus nunc at nisi 
 
    ullamcorper facilisis.</p> 
 

 
<button class="button1" id="DoAgain"> DO IT AGAIN</button>

+0

vielen dank für ihre antwort! Es funktioniert, aber wir müssen .innerHTML behalten und anstatt den Text jetzt zu ändern, fügt es Text hinzu. Das fing nach dem finalString an. – Lau

+0

Warum hatten Sie '+ makeSentence()', wenn Sie keinen Text hinzufügen wollten? – Barmar

+0

Die Funktion fügte 'demo1' Text hinzu, der im HTML nicht existiert. – Barmar