局部变量给全球带来麻烦

时间:2015-05-12 02:52:49

标签: javascript jquery function

我是JS超级n00b。

我在这篇文章(Puzzling behavior from IF ( ) statement)中询问了关于IF语句的这个问题的一个方面,但看起来实际问题与我创建的变量的范围有关。似乎在声明(我认为是)全局变量之后,代码中的其他函数无法访问变量。

我正在做JS项目/程序,提示用户输入一个单词,程序会反转单词输入。

在上一篇文章(PP)中,用户正确地确定我得到的是“错误”字样。控制台消息(请参阅代码),无论输入单词的长度是多少,因为我在页面加载时为变量赋值,但在用户单击页面上的按钮时不再读取它。

如果变量'字'在当地,我只能得到一个“错误的”#39;控制台消息和变量' word'是全球性的,我只能得到一个引用错误。'

非常感谢任何人的任何想法。

请参阅以下JS代码:

var word = document.getElementById('wordChoice').value;  
var lttrs = [];

function flipFail () {
    alert("Please enter a word of at least two characters.");
    console.log(false);

    var inputErrArr = ['has-error', 'has-feedback'];
    var inputErrFdbk = ['glyphicon', 'glyphicon-remove'];
    wordChoice.style.backgroundColor = "#FFDBAA";

    for (var i = 0; i < inputErrArr.length; i ++) {
        addClass(wordInput, inputErrArr[i]);
    }

    for (var i = 0; i < inputErrFdbk.length; i ++) {
        addClass(glyph, inputErrFdbk[i]);
    }

    document.getElementById('wordChoice').value = " ";

}   // END flipFail() 

function flipSuccess (){

    for (var i = 0; i < word.length; i ++) {
        lttrs.push(word.charAt(i));
    }

    lttrs.reverse();
    var reversedWord = lttrs.join('')
    alert("Your reversed word is: " + reversedWord);
    console.log(true);

    document.getElementById("flip").innerHTML = "Flip Again!";
    document.getElementById('wordChoice').value = " ";

} // EN flipSuccess () 

function flipChk () {


    if (word.length < 2) {
        flipFail ();

    } else { 
        flipSuccess ();
    }
}

请在此处查看完整实施的代码:http://supsean.com/supsean/flipr/flipr.html

1 个答案:

答案 0 :(得分:0)

您需要在flipChk()中设置function flipChk () { var word = document.getElementById('wordChoice').value; if (word.length < 2) { flipFail (); } else { flipSuccess (word); } } function flipSuccess (word){ var lttrs = []; for (var i = 0; i < word.length; i ++) { lttrs.push(word.charAt(i)); } lttrs.reverse(); var reversedWord = lttrs.join('') alert("Your reversed word is: " + reversedWord); console.log(true); document.getElementById("flip").innerHTML = "Flip Again!"; document.getElementById('wordChoice').value = " "; } // EN flipSuccess () 。您在首次加载页面时,在用户在表单中输入任何内容之前进行设置,而不是在用户单击“翻转”按钮时进行设置。

然后,不是使用全局变量,而是将其作为参数传递给函数。通常,除非确实需要,否则请避免使用全局变量。

LinearLayout