-4
    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

4 回答 4

3

编辑:您已经更改了代码,因此i不再存在,因此下面的部分答案不再适用。但是你所说的关于你提供的代码的内容在两种不同的方面根本不可信:

  1. 您已经说过,prev[1] = man_val;紧随其后的是alert(prev[1]);shows undefined,但是对于您显示的代码而言,这根本不是真的。

  2. 您说过这prev.push会导致错误,说pushis not a function,但在您显示的代码中,prev绝对是一个数组,并且数组肯定有push.

我的猜测是你有一些你没有展示的东西,要么是阴影,要么是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(并且您必须在某个地方,或者尝试从中读取一个值会导致 a ReferenceError)并且您想使用它,那么您希望与使用它的方式保持一致。例如:

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

我假设i0那里开始。

于 2013-04-02T07:16:21.113 回答
1

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

prev[count] = man_val;
alert(prev[count]);
于 2013-04-02T07:16:43.130 回答
1

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

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);
    }
}
}
);

它工作得很好

于 2013-04-02T07:58:48.430 回答
0

使用推()

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

count += 1;
prev.push(man_val);
console.log(prev);
...
于 2013-04-02T07:14:36.810 回答