麻烦在JS中声明和引用全局数组

时间:2013-12-18 20:55:00

标签: javascript arrays

我试图在javascript中创建一个全局数组以用于多个函数。尝试回调时,数组不会显示。

var iListCount = 0;
var arrListItems = new Array;

function addItem(){
    var list = document.getElementById('spanUser');
    var sText = document.getElementById('item-text').value;

    if (isNaN(iListCount)){
          iListCount = 0;
    }
    if (sText != "") {
        iListCount++;
        arrListItems[iListCount] = sText;
        list.innerHTML = list.innerHTML+"<li class='list-group-item' id='lis"+iListCount+"'>"+sText+"</li>";
        document.getElementById("item-text").value = "";        
    } else {
        document.getElementById("item-text").focus();   
        alert(arrListItems[1]);
    }
}

编辑:Html

            <div class="form-group" style="margin-bottom:65px" id="header-div">
              <label class="txt-sub pull-left">_items</label>
            </div>   
                <div style="margin-left:40px">
                    <div class="form-group">
                        <input type="text" class="form-control pull-left" id="item-text" style="margin-bottom:10px; width:200px;margin-right:10px" onKeyUp="if (event.keyCode == 13) document.getElementById('btnAddItem').click()">
                        <button class="btn btn-default " onClick="addItem()" id="btnAddItem">add</button>
                        <button class="btn btn-default pull-right" onClick="removeItem()">remove last item</button>

                         <ul class="list-group" id="user-item" style="margin-top:10px">
                            <span id="spanUser">
                            </span>   
                         </ul>
                    </div>
                </div>
            <!--End Items-->

3 个答案:

答案 0 :(得分:0)

只需初始化数组:

var arrListItems = [];

答案 1 :(得分:0)

如果要在语句

处检查数组结果

alert(arrListItems[1]);

然后确保数组至少有两个元素。

可以使用索引0读取数组的第一个元素,使用1读取第二个元素,依此类推。

如果您尝试阅读第一个元素,请使用

alert(arrListItems[0]);

还有陈述

iListCount++;
arrListItems[iListCount] = sText;

应该合并为一个这样的语句

arrListItems[iListCount++] = sText;

这样你就可以从它的第一个位置开始向数组中添加元素。

您也可以尝试

arrListItems[arrListItems.length] = sText;

arrListItems[iListCount++] = sText;

的示例

enter image description here

答案 2 :(得分:0)

从窗口对象定义全局变量:

window.iListCount = 0;
window.arrListItems = [];

您是否仅使用iListCount作为arrListItems的索引,如果是,请替换:

iListCount++;
arrListItems[iListCount] = sText;

用这个:

arrListItems.push(sText);

iListCount引用替换为arrListItems.length

我在以下小提琴中使用了上述建议以及其他一些良好实践措施:

<强> http://fiddle.jshell.net/2hEby/