2017-08-20 13 views
0

ウェブページにはテキストエリア(id = "text")とボタン(id = "dlButton3")があります。Javascriptのテキストエリアからテキストを読み取る際にエラーが発生しました

私がしなければならないことは、テキストエリアにテキストを入力することです。私はボタンを押したときに、次のことが起こったことになります。テキスト領域に

  1. テキスト機能にロードされます、
  2. テキストは、区切り文字でスピッティングされます「」
  3. ありループは、すべての文字列の長さ、および
  4. 印刷最長1つの値

問題は、次のコードで、あるを比較するために、私はテキスト領域から文字列を取ることができますが、焦げ茶色が知っている、なぜ私はできません文字列を分割する。 NDそれがエラーを返します。エラーことができるもの

function findlongestword(){ 
      var testing = document.getElementById('text').value; 
      console.log(testing); 
      var strText = testing.split(" "); 
      var length = 0; 
      for (var i=0; i < strText.length; i++) { 
       if (length < strText[i].length) { 
        length = strText[i].length; 
        targetString = strText[i] 
       } 
      } 
      console.log (targetString); 
     } 
     window.onload = function(){ 
      findlongestword(); 
      document.getElementById("dlButton3").onclick = findlongestword; 
     } 

を以下のように「キャッチされないにReferenceError targetStringが定義されていません」

コードはありますか? 事前にお手数をおかけしております。あなたのループ内でそれを使用する前に、targetStringを宣言していない :

+0

targetStringが実際に定義されていないため実際に発生します。それは本当にそれより簡単になることはできません。あなたの関数の先頭に 'var targetString'を追加するだけです。 –

答えて

0

続きを読むだけtargetStringについてブロックスコープは、ループ

function findlongestword() { 
    var testing = document.getElementById('text').value; 
    var strText = testing.split(" "); 
    var length = 0; 
    var targetString = ''; 
    for (var i=0; i < strText.length; i++) { 
    if (length < strText[i].length) { 
     length = strText[i].length; 
     targetString = strText[i] 
    } 
    } 
    console.log (targetString); 
} 
window.onload = function() { 
    findlongestword(); 
    document.getElementById("dlButton3").onclick = findlongestword; 
} 
0

「targetStringが定義されていないキャッチされないにReferenceError」内に存在します。したがって、javascriptは、ループが終了した後で、どこを見つけるか '参照'することができませんでした。

追加することで、var targetString = "";ループが始まる前に問題が解決されます。

function findlongestword(){ 
var testing = document.getElementById('text').value; 
      console.log(testing); 
      var strText = testing.split(" "); 
      //ADD HERE     
      var targetString = ""; 
      var length = 0; 

      for (var i=0; i < strText.length; i++) { 
       if (length < strText[i].length) { 
        length = strText[i].length; 
        targetString = strText[i] 
       } 
      } 
      console.log (targetString); 
     } 
     window.onload = function(){ 
      findlongestword(); 
      document.getElementById("dlButton3").onclick = findlongestword; 
     } 
関連する問題