2014-06-14 109 views
0

我似乎無法圍繞這一點纏住我的頭。我想要的是一個文本框,在其中輸入1234,12345,12346並返回傳遞的最長字符串的整數。因此,上述將返回6.作爲參數傳遞的最長字符串的長度

我有以下的JavaScript代碼的文本框:

var titleInput = document.getElementById("textBoxValue"); 
function countString() 
    { 
var string = titleInput.value; // Does not work 
//var string = ["123", "1234"]; works with out text box returns 4 hard coded 
console.log(string); // returns ["123, 1234"] 

var largest = 0; // set largest to 0 
for (var i = 0; i < string.length; i++) { 
    if (string[i].length > largest) { 
    largest = string[i].length; 

    } 
} 
console.log(largest); 
} 
countString(); 

我不明白爲什麼它的工作原理,當硬編碼而是從文本框中提交時,它不。

+0

請添加標籤來表示你是你使用預處理'的document.getElementById(「文本」 BoxValue)在 – Michelle

+0

工作語言;'沒有。看起來像普通的JS?另外,當'String'是一個javascript本地對象時,我會避免使用像'string'這樣的變量名。 – GillesC

+0

var titleInput = document.getElementById(「textBoxValue」);它應該是。 –

回答

0

對於代碼的功能,必須在文本框的值分成數組,使用split()方法並將其用作「字符串」變量(避免使用變量名稱的保留字!)。否則,使用字符串[i]語句,您將訪問字符串的各個字符,而不是用逗號分隔的實際子字符串。所以,你的函數應該結束這樣的:

var titleInput = document.getElementById("textBoxValue"); 

function countString() { 
var str = titleInput.value.split(','); 
console.log(str); 

var largest = 0; 
for (var i = 0; i < str.length; i++) 
    if (str[i].length > largest) 
     largest = str[i].length; 
console.log(largest); 
} 

countString(); 
+0

這是根據需要工作的,我必須從str中刪除空格,我不希望它在count中感謝解釋現在我的頭被纏繞在它:) –

2

要想從文本框中的數組,你可以使用

var titleInput = document.getElementById("text"), 
    arr = titleInput.value.split(', '); 

而獲得最大的長度,你可以用這些

  • ES5 reduce一個一起使用Math.max

    arr.reduce(function(prev, curr) { 
        return Math.max(prev, curr.length) 
    }, 0); 
    
  • ES5 map

    Math.max.apply(null, arr.map(function(str){ 
        return str.length; 
    })); 
    
  • ES5 map,與ES6 spread operatorarrow functions簡化:

    Math.max(...arr.map(str => str.length)); 
    
+0

沒有解釋 - > nothingless!(什麼是ES6? ...) – Sam

+0

@Sam你可以閱讀我鏈接的MDN文章ES6是EcmaScript的新版本,目前只有草稿,並且支持小型瀏覽器,它引入了令人驚歎的功能,希望這些功能在未來幾年內可以安全使用。 – Oriol

+0

什麼是ES6?hmm –

相關問題