2011-06-27 57 views
0

このポストの下を参照してください。関数を呼び出せません

function isVowel(aCharacter) 
    { 
     return ((aCharacter == 'a') || (aCharacter == 'A')|| 
       (aCharacter == 'e') || (aCharacter == 'E')|| 
       (aCharacter == 'i') || (aCharacter == 'I')|| 
       (aCharacter == 'o') || (aCharacter == 'O')|| 
       (aCharacter == 'u') || (aCharacter == 'U')|| 
       (aCharacter == 'y') || (aCharacter == 'Y')); 
    } 


function myF(aString) 
{ 
    // variable to hold resultString 
    var resultString = ''; 

    // variable to hold the current and previous characters 
    var currentCharacter = ''; 
    var precedingCharacter = ''; 

    // in the case of the first character in the string there is no 
    // previous character, so we assign an empty string '' to the variable at first 
    //precedingCharacter = ''; 

    // TODO part (ii) 
    // add code as directed in the question 

    var i = 0; 
    for(i; i < sString.length; ++i) 
    { 

     currentCharacter = sString.charAt(i); 
     if (isVowel(currentCharacter) && (!isVowel(precedingCharacter))) 
     { 
     resultString = resultString + 'ub'; 
     } 
     resultString = resultString + currentCharacter; 
     precedingCharacter = currentCharacter; 
    } 

    return resultString; 
} 

var string1 = "the cat sat on the mat"; 
var result1 = myF(string1); 
document.write(string1);//THIS ISN'T GOING TO BE DISPLAYED, BUT WHY? 

document.write('<BR>'); 
document.write(result1); 
+2

*未知のReferenceError:sStringが定義されていない* –

答えて

2

あなたは存在しませんsStringウィッヒに反復していない、あなたのパラメータaStringに。

0

sStringはあなたの関数でどこに宣言されていますか? aString(またはvar sString = aStringと宣言)を試して、もう一度やり直してください。

0

命名間違いありfunction myF(aString)function myF(sString)

0

に変更してください。ここにあなたのコードの作業コピーがあります。 http://jsfiddle.net/hXarY/

あなたはまだ実行しない場合は、このようなエラーをキャッチする「放火犯」を使用して試すことができます。

function isVowel(aCharacter) 
    { 
     return ((aCharacter == 'a') || (aCharacter == 'A')|| 
       (aCharacter == 'e') || (aCharacter == 'E')|| 
       (aCharacter == 'i') || (aCharacter == 'I')|| 
       (aCharacter == 'o') || (aCharacter == 'O')|| 
       (aCharacter == 'u') || (aCharacter == 'U')|| 
       (aCharacter == 'y') || (aCharacter == 'Y')); 
    } 


function myF(sString) // this should be sString , not aString 
{ 
    // variable to hold resultString 
    var resultString = ''; 

    // variable to hold the current and previous characters 
    var currentCharacter = ''; 
    var precedingCharacter = ''; 

    // in the case of the first character in the string there is no 
    // previous character, so we assign an empty string '' to the variable at first 
    //precedingCharacter = ''; 

    // TODO part (ii) 
    // add code as directed in the question 

    var i = 0; 
    for(i; i < sString.length; ++i) 
    { 

     currentCharacter = sString.charAt(i); 
     if (isVowel(currentCharacter) && (!isVowel(precedingCharacter))) 
     { 
     resultString = resultString + 'ub'; 
     } 
     resultString = resultString + currentCharacter; 
     precedingCharacter = currentCharacter; 
    } 

    return resultString; 
} 

var string1 = "the cat sat on the mat"; 
var result1 = myF(string1); 
document.write(string1);//THIS ISN'T GOING TO BE DISPLAYED, BUT WHY? 

document.write('<BR>'); 
document.write(result1); 
0

エラーの原因を知ったので、コードを短縮することを検討してください。かなり嵩張って冗長です。

function isVowel(char) { 
    return /[aeiouy]/i.test(char); 
} 

function myF(str){ 
    var i = 0 
     ,current 
     ,prevIsVowel = false 
     ,result = [] 
    ; 
    for (; i<str.length; i++){ 
     current = isVowel(str[i]); 
     if (current && !prevIsVowel){ 
     result.push(str[i]); 
     } 
     prevIsVowel = current; 
    } 
    return result.join(''); 
} 
console.log("the cat sat on the mat"); //=> eaaoea 
関連する問題