JavaScript数组推送不起作用

时间:2014-12-17 04:07:47

标签: javascript arrays methods

我正在尝试将值推送到数组中,它在开发人员工具中给出了这个错误。

  

未捕获的TypeError:无法读取属性' push'为null

以下是它似乎坚持的代码,单词和本地单词之前就是这样定义的。

var word = [];
var localWord = []; 

function setLocalArray() {
    // first get words from text field and update word array.
    word = document.getElementById("words").value.split(',');

    // store word array in localStorage            
    for(var i=0; word.length > i; i++) {
        var key2 = "part"+i;
        localStorage.setItem(key2,word[i]);
        localWord.push(key2);
    }

    localStorage.setItem("localWord",JSON.stringify(localWord));
    text2Array();
    reveal();
}

localWord.push(KEY2);似乎是它被困在了什么。我已经查看了我在push方法上找到的所有内容,但我似乎无法找到它为什么会给我这个错误。救命?

以下是jsfiddle http://jsfiddle.net/runningman24/jnLtpb6y/

的完整代码

3 个答案:

答案 0 :(得分:1)

试试这个......

var localWord = new Array(); //create new array
var word = new Array();

function setLocalArray() {
    word = document.getElementById("words").value.split(',');
    // store word array in localStorage             
    for(var i=0; word.length > i; i++) {
        var key2 = "part"+i;
        localStorage.setItem(key2,word[i]);
        localWord.push(key2);
    }
}

答案 1 :(得分:1)

我发现了问题,如果你查看我发布的jsfiddle,我试图从localStorage中拉出localWord,即使它不存在,所以它将它设置为null。感谢大家的想法和贡献。

答案 2 :(得分:0)

您可以尝试使用module pattern

隔离变量的范围
var arrayManager =  (function () {
        var word = [];
        var localWord = []; 

        function setLocalArray() {
            // first get words from text field and update word array.
            word = document.getElementById("words").value.split(',');

            // store word array in localStorage            
            for(var i=0; word.length > i; i++) {
                var key2 = "part"+i;
                localStorage.setItem(key2,word[i]);
                localWord.push(key2);
            }

            localStorage.setItem("localWord",JSON.stringify(localWord));
            text2Array();
            reveal();
        }

       return {
          setLocalArray:setLocalArray
        } ;
    }());

从外部你只需要调用arrayManager.setLocalArray()