我正在为数组分配一个元素,但它显示未定义

时间:2013-04-02 07:13:56

标签: javascript jquery

    var prev = [];
    var count = 0;
    var data = '';
    $('#add_ref').click(function(){
       var man_val = $.trim($('#manual_ref').val());
         if(($.inArray(man_val,prev))==-1){

          if(man_val != ''){
            count += 1;
            prev[1] = man_val;
            alert(prev[i);// Problem is here
            data = '<li id="45" class="as-selection-item"><a class="as-close">x</a> '+ man_val +'   <input id="notal_45" class="cls-notal" type="checkbox" value="45" name="notal_chk[]"></li>';
            $('#ul-rtl-ref-1').append(data);
        }
       }
  }
 );

为什么它没有为数组赋值? 如果我写prev[1] = "myvalue"它也不起作用。警报始终显示未定义 编辑 prev.push(man_val)显示推送不是功能

4 个答案:

答案 0 :(得分:3)

修改:您已经更改了代码,因此不再有i,因此以下部分答案不再适用。但是你所说的关于你所呈现的代码的说法在两个方面并不可信:

  1. 您已经说过prev[1] = man_val;后跟alert(prev[1]);显示undefined,但您所显示的代码根本不是这样。

  2. 您已经说prev.push会导致错误,说push不是函数,但在您显示的代码中,prev绝对是一个数组,并且数组肯定有push

  3. 我的猜测是你有一些你没有展示过的东西,要么遮蔽prev,要么为它分配一个非数组。但是,由于您没有显示该代码,因此您对代码所说的内容并不符合代码。

    希望以下内容在您的实际情况中有所帮助。


      

    count += 1;

         

    prev[1] = man_val;

         

    alert(prev[i]);// Problem is here

    您在那里使用i,而在上面的行中您使用的是1。您尚未显示任何声明或初始化i的代码,因此我们不知道它可能具有什么价值,但显然它没有值1

    如果您真的想要推送到阵列,通常会使用push或分配给prev[prev.length]。所以你rcode可能是:

    prev.push(man_val);
    alert(prev[prev.length - 1]);
    

    prev[prev.length] = man_val;  // This will increment `prev.length`
    alert(prev[prev.length - 1]); // ...which is why we're using -1 here
    

    但是如果你有一个i(并且你必须在某处,或者试图从中读取一个值会导致ReferenceError)并且你想要使用它,你想要与你如何使用它一致。例如:

    prev[i++] = man_val;
    alert(prev[i - 1]);
    

    我假设i0开始。

答案 1 :(得分:1)

我在代码中看不到变量i。它应该是 -

prev[count] = man_val;
alert(prev[count]);

答案 2 :(得分:1)

我找到了答案 我将变量prev更改为prv和alert(prev[i])更改为alert(prv[count]) 我认为javascript问题在全局变量中很普遍。 我的最终代码是

var prv = []
var count = 0;
var data = '';
$('#add_ref').click(function(){

var man_val = $.trim($('#manual_ref').val());
if(($.inArray(man_val,prv))==-1){

    if(man_val != ''){
        count += 1;
        prv[count] = man_val;
        alert(prv[count]);
        data = '<li id="45" class="as-selection-item"><a class="as-close">x</a> '+ man_val +'   <input id="notal_45" class="cls-notal" type="checkbox" value="45" name="notal_chk[]"></li>';
        $('#ul-rtl-ref-1').append(data);
    }
}
}
);

它运作良好

答案 3 :(得分:0)

使用push()

  

通过附加给定元素并返回数组的新长度来变异数组。

count += 1;
prev.push(man_val);
console.log(prev);
...