随机文本发生器错误与JAVASCRIPT

时间:2017-05-11 08:37:35

标签: javascript arrays

我们从一组单词创建随机文本。这个想法是洗牌,混合单词来创建新的"随机句子"。我们几乎就是这样,关键是它增加了未定义的"在每个段落的开头,并在最后添加随机单词。有人可以帮助我们吗?

我们认为句子以大写字母开头,并以点结尾。

PD:添加它不会生成随机文本的片段,但在.js文件中它会生成。



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);
   
    
    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){
	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+".";

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

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

function randomNumber(a,b) {
    return Math.round(Math.random()*(b-a)+parseInt(a));
}
&#13;
<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>
&#13;
&#13;
&#13;

2 个答案:

答案 0 :(得分:0)

在您的代码更改中

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

进入

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

答案 1 :(得分:0)

您的代码中有newString+=makeSentence(6);,但makeSentence()没有return语句,因此返回undefined。我想它应该返回finalString而不是将它分配给不存在的元素的.innerHTML

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>