JavaScript字符串生成器

JavaScript字符串生成器,javascript,if-statement,for-loop,Javascript,If Statement,For Loop,斯塔克的伟大人物,我需要你们的帮助。我目前正在做一个项目,创建一个供人们使用的Lorem Ipsum字符串。问题是,可以说我已经奠定了基础,但现在我不知道下一步该怎么办。我对JavaScript真的是相当陌生,因此,有点挣扎 <script type="text/javascript"> var gordonTime = function(){ var lines = new Array( "I

斯塔克的伟大人物,我需要你们的帮助。我目前正在做一个项目,创建一个供人们使用的Lorem Ipsum字符串。问题是,可以说我已经奠定了基础,但现在我不知道下一步该怎么办。我对JavaScript真的是相当陌生,因此,有点挣扎

<script type="text/javascript">
 var gordonTime = function(){
                    var lines = new Array(
                        "It's raw", 
                        "Oh, for god's sake", 
                        "Is that the best you can do?", 
                        "Disgusting.", 
                        "You donkey!", 
                        "This isn't cooking", 
                        "Fine cuisine", 
                        "Get out", 
                        "Hells Kitchen", 
                        "Bland"
                    );
                    var paraAmount = prompt("How many paragraphs do you need?");
                    var phraseAmount = prompt("How many words to a paragraph?");
                    for(i = 0; i <= phraseAmount; i++){
                            document.write(lines[i] + " ");
                        }
                }
            </script>   
目前,浏览器当前会提示用户输入他们需要的段落数量,然后是他们希望在每个段落中包含的单词数量。我的问题是,我只是不知道如何将字数计算到段落数,我只是不知道从哪里开始编程,是否有人可以给我任何参考资料来开始这项工作。代码当前引用数组并准确地生成所述数量的短语


基本上,我需要代码来识别提示中需要的段落数量,然后计算出要放入该段落的短语数量。有什么想法吗,伙计们?任何帮助都会很好。谢谢。

您可以使用空格拆分参数图中的单词:

 var lines = new Array(
                        "It's raw", 
                        "Oh, for god's sake", 
                        "Is that the best you can do?", 
                        "Disgusting.", 
                        "You donkey!", 
                        "This isn't cooking", 
                        "Fine cuisine", 
                        "Get out", 
                        "Hells Kitchen", 
                        "Bland"
                    );

var gordonTime = function(){

                    var paraAmount = prompt("How many paragraphs do you need?");
                    var phraseAmount = prompt("How many words to a paragraph?");

                    for(i = 0; i <= paraAmount; i++){
                         var line = lines[i];
                         var words = line.split(" ");

                         var text = "";

                         for (j = 0; j < phraseAmount; j++)
                         {
                            text += words[j] + " ";                            
                         }

                        document.write("<p>" + text + "</p>");
                     }
                }

但是,您仍然需要处理索引超过数组长度的情况

我不太确定这是否符合您的要求,js不是最好的,但它会生成随机短语

您可以更改它以枚举lines数组,并一直重复,直到达到字数,或者您可以随机选择它们。这完全取决于你。您只需要更改GetRandomPhraseWords方法,以获取数组中的下一个方法,或者如果到达最后一个方法,则更改第一个方法

使用jQuery

没有jQuery


我认为你缺乏一个适合自己需求的工作理念。你应该知道并告诉我们发生了什么,例如,当他选择每段10个单词,因为你的行没有10个单词。您还可以使用输入的短语Amount创建for循环。当用户输入50个段落,而您尝试访问行[20]时,会发生什么情况?它将崩溃…所发生的是脚本只是打印出未定义的内容,目前还可以,因为将有更多信息及时添加到数组中,它没有崩溃,只是显示了这些内容。这无法正常工作。它只会在一个段落中输入一个数组值,如果用户说他们想要一个段落,它会在开始另一个段落之前输入第一个数组值,即使一个段落中有5个短语。然后,您必须用其他内容替换document.write中的。我想我误解了你的问题。我真的很难理解你的要求,你能再详细解释一下你的问题吗?你在使用jQuery时没有指出它,因为问题作者没有提到jQuery,你应该解释他需要包含它才能让你的代码正常工作。啊,好的观点,RononDex所说的:-您需要引用jQuery库才能让$selector工作。如果只想使用JS,则需要获取/创建元素,并更改段落.append行以连接innerHTML/innerText不过我还是会参考jQuery。。比较容易=
     var gordonTime = function () {

     var lines = new Array(
         "It's raw",
         "Oh, for god's sake",
         "Is that the best you can do?",
         "Disgusting.",
         "You donkey!",
         "This isn't cooking",
         "Fine cuisine",
         "Get out",
         "Hells Kitchen",
         "Bland");

     var paragraphCount = prompt("How many paragraphs do you need?");
     var wordsPerParagraph = prompt("How many words to a paragraph?");

     for (var i = 0; i < paragraphCount; i++) {
         var paragraph = $('<p />');         

         AppendWordsTo(paragraph, wordsPerParagraph, 0);

         $('body').append(paragraph);
     }

     function AppendWordsTo(paragraph, wordsPerParagraph, currentWordCount) {
         var phrase = GetRandomPhraseWords();

         for (var i = 0; i < phrase.length; i++) {
             if (currentWordCount < wordsPerParagraph) {
                 paragraph.append(phrase[i] + " ");
                 currentWordCount++;
             }
         }

         if (currentWordCount < wordsPerParagraph) {
             AppendWordsTo(paragraph, wordsPerParagraph, currentWordCount);
         }
     }

     function GetRandomPhraseWords() {
         var randomPhrase = lines[Math.floor(Math.random() * lines.length)];
         var phraseWords = randomPhrase.split(" ");

         return phraseWords;
     }
 };

 gordonTime();
var gordonTime = function () {
     var lines = new Array(
         "It's raw",
         "Oh, for god's sake",
         "Is that the best you can do?",
         "Disgusting.",
         "You donkey!",
         "This isn't cooking",
         "Fine cuisine",
         "Get out",
         "Hells Kitchen",
         "Bland");

     var paragraphCount = prompt("How many paragraphs do you need?");
     var wordsPerParagraph = prompt("How many words to a paragraph?");

     GenerateParagraphs(paragraphCount, wordsPerParagraph);

     function GenerateParagraphs(paragraphCount, wordsPerParagraph)
     {       
         var body = document.getElementsByTagName('body')[0];

         for (var i = 0; i < paragraphCount; i++) {
             var paragraph = document.createElement('p');

             AppendWordsTo(paragraph, wordsPerParagraph, 0);         

           body.appendChild(paragraph);
         }   
     }

     function AppendWordsTo(paragraph, wordsPerParagraph, currentWordCount) {
         var phrase = GetRandomPhraseWords();

         for (var i = 0; i < phrase.length; i++) {
             if (currentWordCount < wordsPerParagraph) {
                 paragraph.innerHTML += (phrase[i] + " ");
                 currentWordCount++;
             }
         }

         if (currentWordCount < wordsPerParagraph) {
             AppendWordsTo(paragraph, wordsPerParagraph, currentWordCount);
         }
     }

     function GetRandomPhraseWords() {
         var randomPhrase = lines[Math.floor(Math.random() * lines.length)];
         var phraseWords = randomPhrase.split(" ");

         return phraseWords;
     }
 };

 gordonTime();