JavaScript / HTML:找到最长的单词并与当前单词进行比较

时间:2018-03-15 04:55:00

标签: javascript html

我正在写一个代码:

  1. 允许我的用户输入一个句子。
  2. 找到该句中最长的单词。
  3. 将最长的一个与句子中的每个单词进行比较。
  4. 字符串中的单词直接出现在网页上,布局如此 单行比字符串中最长的单词长。
  5. 我已经将这段代码工作了两天,感觉在某个地方完全迷失了。请告诉我改进我的代码。

    
    
    <!doctype html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>Wrap Text </title>
        <script>
        
    //Determine Longest word and compare to currend word       
        function longWord(string){  
            var lengthOfString = 0;
            var arrayOfText = string.split(" ");  
            for ( i = 0; i < arrayOfText.length; i++){
                if (arrayOfText[i].length > lengthofString){
                    lengthOfString = arrayOfText[i].length;
                }
            }
            return lengthOfString;
            } 
           
    // Longest vs current word
        function layoutString(string, length){
        var x = 0;
        var testLength = 0;
        var testLength = arrayOfText[i].length;
            do {
                testLength + 1 + arrayOfText[i].length
            } while (testLength > longWord);
        }
    
    //Call this function in HTML               
        function wrapText(string) {
         var length = longWord(string);
            layoutString(string, length);
        document.getElementById("demo").innerHTML += arrayOfText + "<br>";
        }
       
        </script>
    </head>
    
    <body>
        <h3>Let's Wrap your text!</h3>
    <!--User Input Section-->    
        <p>Enter Text: <input id="yourValue" value=""></p>
        <p id="demo"></p>
    <!--Button executing function-->    
    <button onclick="wrapText(yourValue.value)">Wrap Text</button>
    
    </body>
    </html>
    &#13;
    &#13;
    &#13;

1 个答案:

答案 0 :(得分:0)

一些问题:

  1. 在layoutString和wrapText中无法访问arrayOfText,因为它是longWord的语言环境变量
  2. 在layoutString中,您使用longWord(函数名称)而不是参数length。
  3. “testLength + 1 + arrayOfText [i] .length”这一行没有效果,它只是将三个值加在一起,但不会将它分配给任何东西。
  4. layoutString通常什么都不做......
  5. 我不确定你的第四个要求,因为所有单词的长度都将小于或等于最长单词的长度,所以我在所有短单词的前面加上连字符,所以它们的长度都相同。也许这会让你更接近你的最终目标。

    试试这个:

    <!doctype html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>Wrap Text </title>
        <script>
        
        //Determine Longest word and compare to current word       
        function longWord(string){  
            var lengthOfString = 0;
            var arrayOfText = string.split(" ");  
    
            for (var i = 0; i < arrayOfText.length; i++){
                if (arrayOfText[i].length > lengthOfString){
                    lengthOfString = arrayOfText[i].length;
                }
            }
    
            return lengthOfString;
         } 
           
        // Longest vs current word
        function layoutString(string, length){
    
            var arrayOfText = string.split(" ");  
    
            for (var i = 0; i < arrayOfText.length; i++){
                while (arrayOfText[i].length < length) {
                    arrayOfText[i] = '-' + arrayOfText[i];
                };
            }
    
            return arrayOfText;
        }
    
        //Call this function in HTML               
        function wrapText(string) {
            var longestWordLength = longWord(string),
                strings = layoutString(string, longestWordLength),
                demo = document.getElementById("demo");
    
            demo.innerHTML = '';
    
            for (var i = 0; i < strings.length; i++){
                demo.innerHTML += strings[i] + "<br>";
            }
        }
       
        </script>
    </head>
    
    <body>
        <h3>Let's Wrap your text!</h3>
    <!--User Input Section-->    
        <p>Enter Text: <input id="yourValue" value=""></p>
        <p id="demo"></p>
    <!--Button executing function-->    
    <button onclick="wrapText(yourValue.value)">Wrap Text</button>
    
    </body>
    </html>